这里有一些指示比这更重要。
我试图让X509和LDAP在我的应用程序中运行。我希望用户使用他们的PKI证书进行身份验证,然后让APP从我们的LDAP服务器获取他们的权限。
我目前正在使用LDAP与客户userDetailsContextMapper合作,但是如何正确地添加x509会让我感到困惑。
我认为我想要的是使用注入的ldapUserDetails服务的PreAuthenticatedAuthenticationProvider。
我该怎么做?我是否需要UserDetailsByNameServiceWrapper来包装LdapUserDetailsService以在预身份验证提供程序中使用?
我问,因为不幸的是,目前测试平台和开发环境已经分离,我没有设置本地LDAP或PKI进行测试,所以它大约需要6个小时的过程才能获得新的战争。开发环境......限制我知道......所以我想第一次就把它弄好。
干杯!
答案 0 :(得分:0)
注意:以下是Spring-Security-Core v1.2.7.3的工作原理,配置名称在2.0RC2中有所不同
根据一些不同的想法,这就是我想出的。这假设您已经使用自定义LDAP和UserDetailsContextMapper
(请参阅:ldap documentation):
确保LDAP
和PreAuthenticatedAuthentication
提供商都在提供商列表中:
grails.plugins.springsecurity.providerNames = [
'preAuthenticatedAutehnticationProvider',
'ldapAuthProvider',
'daoAutehnticationProvider',
'anonymousAuthenticationProvider',
'rememberMeAuthenticationProvider']
然后在你的spring资源(grails-app/conf/spring/resources.groovy
)中配置以下bean:
ldapUserDetailsService(org.springframework.security.ldap.userdetails.LdapUserDetailsService,
ref('ldapUserSearch'),
ref('ldapAuthoritiesPopulator')) {
userDetailsMapper = ref('ldapUserDetailsMapper')
}
userDetailsByNameServiceWrapper(org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper) {
userDetailsService = ref('ldapUserDetailsService')
}
preAuthenticatedAuthenticationProvider(org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationProvider) {
preAuthenticatedUserDetailsService = ref('userDetailsByNameServiceWrapper')
}
然后揍你的叔叔,你有一些阿姨!
作为参考,我用来提出这个解决方案的页面是:
No AuthenticationProvider found using spring security
将LdapUserDetailsService包装在UserDetailsByNameServiceWrapper中 而不是LdapAuthenticationProvider配置PreAuthenticatedAuthenticationProvider,它将能够处理CustomX509AuthenticationFilter发出的PreAuthenticatedAuthenticationToken。 将包装的LdapUserDetailsService注入PreAuthenticatedAuthenticationProvider。
http://blog.serindu.com/2011/05/26/grails-spring-security-using-preauthenticated-authentication-provider/ 介绍如何在grails中连接preAuthenticationAuthenticationProvider
有一个LdapUserDetailsService可以完成LdapAuthenticationProvider所做的所有好事 - 除了身份验证
http://pwu-developer.blogspot.co.uk/2012/02/grails-security-with-cas-and-ldap.html更多关于如何连接ldapUserDetailsService的信息
希望这有助于其他人!