0

我的 Web 应用程序使用 Kerberos 身份验证。我设置了 NegotiateIdentityAsserter 和 LDAP Authentication Provider。如果 sAMAccountName 是用于用户查找的用户,则一切正常。不幸的是,在 tagret 环境中,这个属性不是唯一的。我需要通过用户的 UPN(用户主体名称)来识别用户。

有没有办法实现它?

我的配置是

网络逻辑 10.3.5 Java 1.6


登录配置:

myrealm { 
weblogic.security.auth.login.UsernamePasswordLoginModule required debug=true;
}; 

com.sun.security.jgss.initiate {
     com.sun.security.auth.module.Krb5LoginModule required
     principal="HTTP/ceprwlvyv.dsmsp.local@DSMSP.LOCAL"
     refreshKrb5Config=true
     useKeyTab=true
     keyTab="c:/ccaapl/security/ceprwlvyv_ktpass.keytab"
     storeKey=true
     debug=true;
};

com.sun.security.jgss.accept {
     com.sun.security.auth.module.Krb5LoginModule required
     principal="HTTP/ceprwlvyv.dsmsp.local@DSMSP.LOCAL"
     refreshKrb5Config=true
     useKeyTab=true
     keyTab="c:/ccaapl/security/ceprwlvyv_ktpass.keytab"
     storeKey=true
     debug=true;

};

com.sun.security.jgss.krb5.accept {
     com.sun.security.auth.module.Krb5LoginModule required
     principal="HTTP/ceprwlvyv.dsmsp.local@DSMSP.LOCAL"
     refreshKrb5Config=true
     useKeyTab=true
     keyTab="c:/ccaapl/security/ceprwlvyv_ktpass.keytab"
     storeKey=true
     debug=true;

};

krb5.ini:

[libdefaults]
default_realm = DSMSP.LOCAL
kdc_timesync = 1
ccache_type = 4
ticket_lifetime = 600
clockskew = 1200
dns_lookup_kdc = true

[realms]
DSMSP.LOCAL = {
kdc = DSDC.dsmsp.local
}

[appdefaults]
autologin = true
forward = true
forwardable = true
encrypt = true

提前致谢!

彼得

4

1 回答 1

0

你的说法具有误导性。为什么混合使用 Kerberos 身份验证和 LDAP 身份验证?您只需要 Kerberos 身份验证。成功登录后,您将获得用户的 UPN。在您的 AD 中搜索该字段:userPrincipalName。我就是这样做的。你的问题不够准确。您正在混淆身份验证和用户查找。

于 2011-12-27T09:16:55.907 回答