多租户认证的设计

时间:2014-03-09 16:15:10

标签: authentication multi-tenant

我开始设计多租户系统并已阅读文章:
http://msdn.microsoft.com/en-us/library/aa479086.aspx

无论如何,我有几个与身份验证相关的问题。 例如,我们需要支持需要单独数据库的客户。 更确切地说,客户使用单独的LDAP(每个租户的LDAP)。 我无法解决的问题是,在身份验证之前,身份验证框架需要知道租户,以便针对相应的LDAP进行身份验证。 用户在身份验证期间如何选择租户?

表单身份验证:

我们是否应该开发一个包含3个输入字段的特殊表单登录:用户名,密码和租户?
我们应该向用户显示所有租户的列表吗? 这是信息泄露,用户可以看到部署中所有租户的列表。 它应该是自由文本提交吗?在这种情况下,它容易出错。

其他类型的身份验证:

如果我们使用基本身份验证,如何发送租户信息?摘要认证?客户端证书认证?

任何对现有(免费)框架的观点都将受到赞赏。

1 个答案:

答案 0 :(得分:8)

正如您所正确提到的,您必须在允许用户登录多租户应用程序时识别客户端/租户ID。基本上有3种方法可以识别租户ID。

  1. 使用公司代码文本字段,您的用户可以输入其租户ID,密码/用户名进行身份验证(容易出错,用户可能无法正确输入ID)。

  2. 收集用户名和密码并自行识别租户ID,但您已为系统中的所有用户强制实施唯一身份(电子邮件)。 (首选)

  3. 为每个租户分配唯一的子域(首选)。使用客户的唯一网址,您可以识别租户ID,并且可以连接到客户的相应数据库。

  4. WRT to Authentication,由于安全漏洞,我个人不建议使用基本身份验证,因此您可以使用摘要式身份验证/客户端证书身份验证。