我正在尝试在我的项目中使用Kerberos身份验证。这是我公司的一项内部服务,我想对用户进行身份验证,并从我们的Active Directory中检索用户组。 为此,我使用的是Spring Security,Kerberos扩展和我们公司的AD。
问题:我可以使用Kerberos进行身份验证,但我们在AD上的域名是“WAN.CORP.COM”。所以我用username@WAN.CORP.COM获取我的用户,并且在AD上没有我可以询问的过滤器(userPrincipalName就像username@corp.com)。
我的security.xml包含:
<sec:ldap-user-service id="ldapUserService" server-ref="ldapCorp" user-search-filter="(userPrincipalName={0})" />
<sec:ldap-server id="ldapCorp" url="ldap://ldap.wan.corp.com:389/DC=wan,DC=corp,DC=com" manager-dn="CN=ldap read,OU=CORP,DC=wan,DC=corp,DC=com" manager-password="pass" />
但Spring Security发送异常,因为它无法检索user@WAN.CORP.COM ......
任何人都可以帮助我吗?我想直接通过Spring Security来实现,如果没有,我想我可以在DummyUserDetailsService中获取信息,我是对的吗?
非常感谢,对不起我糟糕的英语......
答案 0 :(得分:0)
Spring security 3.1已经实现了LDAP / AD身份验证。
在这里看到它: http://static.springsource.org/spring-security/site/docs/3.1.x/reference/ldap.html#d0e6795 http://javarevisited.blogspot.com/2011/11/ldap-authentication-active-directory.html
答案 1 :(得分:0)
您可以提供自己的UserDetailsService实现,并将LdapUserDetailsService注入其中。
在loadUserByUsername方法中,您可以修改用户名,然后使用修改后的用户名调用LdapUserDetailsService的loadUserByUsername。