我正在尝试同时使用两种授权机制:LDAP和DAO。 它们按配置顺序工作。如果用户凭据在两种机制中都匹配,则这是不合适的。 (例如,在LDAP中,用户 m.smith 的密码为 qwerty ,而在数据库中,用户 m.smith 的密码为密码 qwerty ) 是否有可能以某种方式传达标志当前使用哪种机制?在这种情况下,其他机制也应忽略。
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.ldapAuthentication()
.contextSource(contextSource)
.userSearchFilter("(sAMAccountName={0})")
.userDetailsContextMapper(userDetailsContextMapper);
auth
.userDetailsService(userDetailsService)
.passwordEncoder(passwordEncoder());
}
答案 0 :(得分:0)
如果您有两种完全不相交的机制,那么您应该将其修复在较高级别(从UI开始)。例如,如果用户使用LDAP身份验证,则您将发送一个标志(例如HTTP标头),该标志指示要使用的身份验证类型。然后,您可以实施自定义过滤器,以执行特定类型的身份验证(以编程方式)。
我不知道有什么其他解决方案可以在运行时完成您想要的事情。