我们有一个多租户ASP.NET应用程序。到目前为止,各个租户之间是相互隔离的,但现在我们有机构管理多个租户,并希望能够使用单个用户帐户管理所有租户。我正在尝试找出最佳方法来实现这一点,希望不需要对我们正在使用的现有技术进行太多更改。
相关技术细节:
- AspNetSqlMembershipProvider用于成员身份验证和角色 - C# 4.0(即将升级到4.5) - 表单验证 - aspx和MVC(v3)页面 - 假设有100个或更多租户,因此任何解决方案都需要支持该数量
我认为要求与SQL Server的安全模型非常相似。我们有一组登录名,代表可以登录系统的所有用户。用户应该能够被赋予一个或多个数据库(租户)的角色。例如:用户Bob在公司A拥有管理员角色,但在公司B只有用户角色。我们还有一个“sysadmin”角色,允许我们的公司员工访问任何租户以及特殊的管理权限,如创建/删除租户等。
我已经对各种库、框架等进行了大量研究,但没有发现任何令人信服的证据表明其他库或框架比我们当前拥有的更好。因此,我目前的想法是弄清楚如何让Sql Membership提供程序做我想要的事情,除非有人能指引我更好的方向。我也不确定我知道在这方面搜索最佳术语。
我考虑了两个选项:
1.只向成员身份验证提供程序添加少量角色,并在成员身份验证提供程序之外处理“当前用户是否在该租户具有此角色”的所有问题。成员身份验证提供程序将用于处理对系统的基本访问。
2.向成员身份验证提供程序添加特定于租户的角色。系统中将有(角色数)x(租户数)总角色。每个新租户都会向系统添加另一组角色,例如“Tenant A:Admin”,“Tenant A:User”等。需要一些额外的表来管理关系,以及可能需要一些自定义代码来确保从成员身份验证提供程序请求正确的特定于租户的角色。
以上两个选项哪个更好?或者我应该寻找其他支持?
相关技术细节:
- AspNetSqlMembershipProvider用于成员身份验证和角色 - C# 4.0(即将升级到4.5) - 表单验证 - aspx和MVC(v3)页面 - 假设有100个或更多租户,因此任何解决方案都需要支持该数量
我认为要求与SQL Server的安全模型非常相似。我们有一组登录名,代表可以登录系统的所有用户。用户应该能够被赋予一个或多个数据库(租户)的角色。例如:用户Bob在公司A拥有管理员角色,但在公司B只有用户角色。我们还有一个“sysadmin”角色,允许我们的公司员工访问任何租户以及特殊的管理权限,如创建/删除租户等。
我已经对各种库、框架等进行了大量研究,但没有发现任何令人信服的证据表明其他库或框架比我们当前拥有的更好。因此,我目前的想法是弄清楚如何让Sql Membership提供程序做我想要的事情,除非有人能指引我更好的方向。我也不确定我知道在这方面搜索最佳术语。
我考虑了两个选项:
1.只向成员身份验证提供程序添加少量角色,并在成员身份验证提供程序之外处理“当前用户是否在该租户具有此角色”的所有问题。成员身份验证提供程序将用于处理对系统的基本访问。
2.向成员身份验证提供程序添加特定于租户的角色。系统中将有(角色数)x(租户数)总角色。每个新租户都会向系统添加另一组角色,例如“Tenant A:Admin”,“Tenant A:User”等。需要一些额外的表来管理关系,以及可能需要一些自定义代码来确保从成员身份验证提供程序请求正确的特定于租户的角色。
以上两个选项哪个更好?或者我应该寻找其他支持?