如何在 Spring 安全性中同时使用数据库和 LDAP 身份验证?

Posted

技术标签:

【中文标题】如何在 Spring 安全性中同时使用数据库和 LDAP 身份验证?【英文标题】:How to use both database and LDAP authentication in Spring security? 【发布时间】:2011-10-23 23:31:40 【问题描述】:

我们有一个 Spring MVC 应用程序。我们现在必须在其中集成 Spring Security。

可以使用数据库或 LDAP 进行身份验证。

我们将在属性文件或数据库中进行配置设置,以决定使用哪种身份验证,即用户是否应根据数据库或 LDAP 进行身份验证。

在任何给定时间,只有一种身份验证类型。

例如一个公司 test1 可以进行数据库身份验证,而另一个公司 test 2 可以进行 ldap 身份验证。

【问题讨论】:

您是否已经知道如何分别使用这两种方法进行身份验证?如果没有,我建议你先去学习它们。 @bluefoot。你好。是的,我目前只这样做。同时,如果你能提出一些方法来做到这一点,那对我真的很有帮助。 澄清一下,您是在运行时/请求时做出此决定的吗?或者这是一个在受保护的应用程序仍在运行时将保持不变的配置设置? 【参考方案1】:

一些想法:

    如果每个客户端都使用自己的配置单独部署,请在 2 个不同的 XML 文件中配置 DAO 和 LDAP 身份验证。在构建时,选择您要使用的并将其捆绑到您的 WAR 中。 如果只有 1 个 WAR,可以尝试在 WAR 中包含两个 XML 文件,并在启动应用程序时使用 -Dmyprop=foo(或其他方式)设置系统属性。然后,在您的 Spring 配置中,使用 $myprop 包含适当的配置文件,以便调用和使用正确的文件。

【讨论】:

感谢您的回复。我可能会选择想法 2。但是请您解释一下如何使用属性文件中的设置在运行时加载特定的 spring 安全文件。 (我将在应用程序属性文件中有一个属性,指示是否应该使用 db 或 ldap auth。) 您是否只运行 1 个 WAR,并且两个客户端都可以在运行时命中它?

以上是关于如何在 Spring 安全性中同时使用数据库和 LDAP 身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在同一spring应用程序中同时添加JWT和基本身份验证?

如何使用 Spring 安全性和 Restful Web 服务验证数据库中的凭据?

spring如何保证并发的同时保证事务

java是线程安全的吗

如何在具有 JDBC 安全性的 Spring Boot 中使用 Flyway?

如何使用 Rest 和 Spring 安全性通过 ldap 登录 Angular?