2

我目前正在使用 Spring MVC Web 应用程序,我们一直在通过本地数据库使用由 spring security 提供的AbstractUserDetailsAuthenticationProvider类的 impl 进行身份验证。

但是,为了进一步保护应用程序,我们决定允许用户通过 LDAP/AD 服务器进行身份验证。这不是必需的,用户可以选择在门户本身的配置中启用此功能。

想知道如何实际实施这一点。找到了AbstractLdapAuthenticationProvider。然而,仅仅将这个额外的身份验证提供程序添加到身份验证管理器是不够的,因为天气是否应该存在应该在运行时由数据库中的标志确定。

非常感谢在这方面的任何帮助。

谢谢阅读:)

4

2 回答 2

1

可能有多种方法可以做到这一点,但一种简单的方法是为身份验证管理器设置两个身份验证提供程序,首先是本地数据库的身份验证提供程序,其次是 LDAP 身份验证提供程序。

要在运行时跳过 LDAP 检查,请AccountStatusException从本地数据库提供程序中抛出(其子类,因为抽象)。这使得身份验证管理器跳过更多提供程序,在您的情况下为 LDAP。

如果您想为用户设置其他方式,请将密码设置为空白或本地数据库中的随机值。

于 2015-11-06T22:52:36.120 回答
0

有两个身份验证提供程序,一个用于本地数据库,一个用于 LDAP。Spring 身份验证管理器将调用public boolean supports(Class authentication)每个提供者中的方法,以查看提供者是否支持提供的 Authentication 类。因此,该supports(Class authentication)方法是您编写自己的自定义逻辑以启用/禁用特定身份验证提供程序的理想场所。

于 2016-01-11T18:20:35.840 回答