2011-12-21 32 views
0

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

有没有办法实现它?

我的配置是

的Weblogic 10.3.5 的Java 1.6


的login.config:

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

com.sun.security.jgss.initiate { 
    com.sun.security.auth.module.Krb5LoginModule required 
    principal="HTTP/[email protected]" 
    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/[email protected]" 
    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/[email protected]" 
    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 

在此先感谢!

Petr

回答

0

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