【问题标题】:Claims-based auth in a SaaS app with Users many-2-many to TenantsSaaS 应用程序中基于声明的身份验证,用户多对多对租户
【发布时间】:2014-06-25 20:20:14
【问题描述】:

我正在构建一个多租户 SaaS 系统,其中系统中的用户是独立于租户实体的实体。 IE:客户 1 可以让用户 User1、User2 与某些角色相关联,而客户 2 可以让 User2 和 User3 与某些其他角色相关联。

用户可以使用特殊菜单选项在租户之间切换,或者在登录时预先提示选择租户。

使用 Web API 和新的身份框架...

问:如果用户可以通过单击按钮切换租户,我如何为角色建模?用户可以关联的租户/客户数量没有限制,因此我不能简单地将所有可能的租户/角色粘贴到 Claims 集合中,因为据我了解,Claims 集合位于 cookie 中最大可达 4k。

但是,我不确定使用 Identity Framework 的内置声明基础架构可以做什么

【问题讨论】:

    标签: asp.net asp.net-web-api asp.net-identity multi-tenant claims-based-identity


    【解决方案1】:

    我们处理此问题的方式是将索赔限制在当前租户范围内。切换租户总是意味着退出当前会话,然后退出另一个租户,以便颁发新令牌并在依赖方创建新 cookie。

    就个人而言,我从未考虑过其他选择。就像您说的那样,如果有许多具有不同角色的租户,但您仍然希望拥有一个身份(用户名/密码),那么在最坏的情况下尝试发出所有可能的声明在技术上可能是不可能的。

    有一个安全警告,我们还必须使用租户名称发出声明,以便依赖方在每次请求时对其进行验证。

    【讨论】:

      【解决方案2】:

      您可以将tenantId 放在声明集合中。如果大小超过 cookie 可以容纳的大小,则使用 cookie 分块(多个 cookie 来存储数据)。见http://msdn.microsoft.com/en-us/library/ff359108.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-06
        • 2020-08-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-27
        • 2012-07-24
        • 2018-04-05
        • 1970-01-01
        相关资源
        最近更新 更多