【问题标题】:Multi tenancy for spring security春季安全的多租户
【发布时间】:2014-04-08 18:46:01
【问题描述】:

如何为多租户 Web 应用程序应用 Spring Security? 我的 Web 应用程序必须支持多租户,即 http://:/springapp/appollo---使用 ldap 进行身份验证 http://:/springapp/fortis----使用本地数据库进行认证 http://:/springapp/manipal---使用誓言进行身份验证

我如何应用 spring security 以便为所有租户提供支持

【问题讨论】:

    标签: spring-security


    【解决方案1】:

    这可能看起来微不足道,尽管这不是一个简单的案例......

    基本上,你需要做的就是在你的webapp中创建一个(Spring)Filter,它将捕获所有请求,并通过引用者的子域决定使用什么身份验证方法(可以实现通过数据库中的一个简单表,它将一个子域映射到一个枚举,例如“oAuth”、“SAML”、“本地”等。这个过滤器应该放在之前任何其他身份验证过滤器,正如我所说,它将在技术上决定使用哪种身份验证方法。

    我必须解决这种情况,而最好的解决方案——就我而言——是支持一种身份验证方法,然后根据需要创建与其他身份验证方法的“桥梁”。比如主要的认证方式是oAuth2.0。然后,如果您需要其他类型的身份验证,您可以为其他机制创建“适配器”或“桥梁”。因此,如果您需要为客户 B 支持 LocalDB,为客户 C 支持 AD,那么您可以从 oAuth 适应 localDB 或 AD。就我而言,我必须支持 SAML,所以 I've created a bridge from oAuth to SAML,因为同一个 Spring-app 同时支持 oAuth 和 SAML 并非易事。 (我认为从 oAuth 支持 AD 和 LocalDB 要容易得多。)

    它是怎么发生的?您将本地数据库包装为 oAuth 提供者,因此您的应用程序将连接到它。您的 AD 连接器也是如此。您必须解析用户输入的 URL,并获得“租户”。然后你去你的数据库,在那里你从租户映射到所需的身份验证机制,你知道要使用什么“桥”。

    HTH。

    【讨论】:

    • 感谢您的回复,但在我的情况下,我只想验证租户感兴趣的一种身份验证类型。网址将是 www.apollo.mCare.com 使用 ldap 身份验证,www.fortis。 mCare.com 使用 oath 身份验证机制,www.manipal.mCare 使用本地数据库身份验证,我想应用 Spring Security,我需要基于租户的身份验证机制的 runtime swith
    • 我已经编辑了我的答案并添加了一些信息。看一看。并且不要忘记将我的答案标记为有用,如果它是:-)
    猜你喜欢
    • 2013-12-22
    • 2019-10-08
    • 2014-02-02
    • 2012-12-13
    • 2017-11-30
    • 2021-05-12
    • 2019-03-31
    相关资源
    最近更新 更多