在我的应用程序中,我使用多个身份验证处理程序,如应用程序数据库,LDAP和SAML。现在,在成功验证后,我使用CustomAuthenticationSuccessHandler.java
扩展SimpleUrlAuthenticationSuccessHandler
类,该类将在成功验证后调用。我的问题是如何获取有关哪个处理程序具有成功身份验证的信息。我需要这些信息,因为如果它是外部用户(LDAP,SAML),那么我必须编写一个逻辑来复制应用程序数据库中的用户。
我在配置全局方法中的配置:
auth
.userDetailsService(userDetailsService)
.passwordEncoder(passwordEncoder());
auth
.ldapAuthentication()
.ldapAuthoritiesPopulator(ldapAuthoritiesPopulator)
.userDnPatterns("uid={0},ou=people")
.userDetailsContextMapper(ldapUserDetailsContextMapper)
.contextSource(getLDAPContextSource());`
答案 0 :(得分:0)
您可以在进行身份验证时将信息设置为身份验证详细信息,或者您可以使用不同的Authentication
实例,例如UsernamePasswordAuthenticationToken
用于数据库和LDAP(可能需要创建新的Authentication
到将它们分开),SAMLAuthenticationToken
用于SAML。