具有相同凭据的Spring-security多种身份验证机制

时间:2019-01-21 11:48:32

标签: spring-security

我正在尝试同时使用两种授权机制: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());
}

1 个答案:

答案 0 :(得分:0)

如果您有两种完全不相交的机制,那么您应该将其修复在较高级别(从UI开始)。例如,如果用户使用LDAP身份验证,则您将发送一个标志(例如HTTP标头),该标志指示要使用的身份验证类型。然后,您可以实施自定义过滤器,以执行特定类型的身份验证(以编程方式)。

我不知道有什么其他解决方案可以在运行时完成您想要的事情。