我开始设计多租户系统并已阅读文章:
http://msdn.microsoft.com/en-us/library/aa479086.aspx
无论如何,我有几个与身份验证相关的问题。 例如,我们需要支持需要单独数据库的客户。 更确切地说,客户使用单独的LDAP(每个租户的LDAP)。 我无法解决的问题是,在身份验证之前,身份验证框架需要知道租户,以便针对相应的LDAP进行身份验证。 用户在身份验证期间如何选择租户?
表单身份验证:
我们是否应该开发一个包含3个输入字段的特殊表单登录:用户名,密码和租户?
我们应该向用户显示所有租户的列表吗?
这是信息泄露,用户可以看到部署中所有租户的列表。
它应该是自由文本提交吗?在这种情况下,它容易出错。
其他类型的身份验证:
如果我们使用基本身份验证,如何发送租户信息?摘要认证?客户端证书认证?
任何对现有(免费)框架的观点都将受到赞赏。
答案 0 :(得分:8)
正如您所正确提到的,您必须在允许用户登录多租户应用程序时识别客户端/租户ID。基本上有3种方法可以识别租户ID。
使用公司代码文本字段,您的用户可以输入其租户ID,密码/用户名进行身份验证(容易出错,用户可能无法正确输入ID)。
收集用户名和密码并自行识别租户ID,但您已为系统中的所有用户强制实施唯一身份(电子邮件)。 (首选)
为每个租户分配唯一的子域(首选)。使用客户的唯一网址,您可以识别租户ID,并且可以连接到客户的相应数据库。
WRT to Authentication,由于安全漏洞,我个人不建议使用基本身份验证,因此您可以使用摘要式身份验证/客户端证书身份验证。