我很难将多租户的概念与网络安全(来自微软的 webmatrix 框架)结合起来。我正在建立一个多租户网站:
- mvc4
- 实体框架6
- 网络安全(来自 webmatrix)
认证
我可以允许用户使用 WebSecurity 方法注册和登录。我可以验证用户是否已登录/是否通过User.Identy.IsAuthenticated
.
确定租户
我通过 url ( [companyname].domain.com
) 确定租户。
注册新客户
新客户可以通过我的应用程序中的注册表单创建租户。如果用户注册(网址中没有公司名称),他将必须提供一些帐户输入作为一些公司输入。然后,他将创建一个新别名,即符合 companyname.domain.com。因此,长话短说,租户总是与 1 个或多个用户 (1-N) 耦合。
要求
我需要保证租户“abc”的用户永远无法登录租户“xyz”。(因此我也不太喜欢 WebSecurity 框架,因为它似乎是我所有租户的共享数据库(或者我错了吗?))。
我的问题
你们能否分享一些关于如何处理现实世界多租户应用程序中“租户”和“经过身份验证的用户”检查的见解?
我的热门话题:
- 您是验证一次租户+经过身份验证的用户,还是在每个控制器的每个操作中验证一次?
- 依赖默认的网络安全类是否安全,或者我会更好地设计自己的用户表,还是客户 MembershipProviders 是更好的选择?
- 我应该使用 cookie 还是这是一个非常糟糕的选择。
如果你能分享一些我可以阅读所有关于这些问题的文档,我会非常有帮助。我强烈希望看到更多关于多租户的详细文档,这些文档深入到实际设计中(甚至可能是代码示例)。
我已经阅读了大部分“一般文档”/“商业演示”:
- http://msdn.microsoft.com/en-us/library/aa479086.aspx
- http://www.businesscloud9.com/content/identifying-tenant-multi-tenant-azure-applications-part-2/10245
- http://msdn.microsoft.com/en-us/library/windowsazure/hh689716.aspx
- http://www.developer.com/design/article.php/3801931/Introduction-to-Multi-Tenant-Architecture.htm
如果需要,我会改写/添加代码/做任何需要帮助的事情。
提前谢谢了。