SAML 2.0 - 从自定义属性而不是NameId验证用户

时间:2017-03-21 15:53:08

标签: security authentication single-sign-on saml-2.0

我们有一个多客户端(内部标识为" corporates"),基于Web的软件,我们已经通过SAML 2.0实现了SSO。每个客户都是企业,每个企业都有自己的用户。

目前,用户通过SAML响应的 NameId 属性(与我们的应用程序中的用户名字段匹配)以及颁发者字段的值进行标识允许我们知道用户来自哪个公司。

现在,我们的一个大客户已经白色标记了解决方案,并且正在内部使用它,为所有客户提供单一的身份提供商。这意味着有一个独特的所有SAML邮件的颁发者值,我们无法再依赖它来识别用户的公司。幸运的是,他们的SAML消息提供了我们需要的所有信息,格式如下:

  • NameId 值的格式为" corporate:username"
  • 有一个特定的" companyId" 属性,其值为" corporate"
  • 有一个特定的" operatorId" 属性,其值为"用户名"

我认为识别公司很简单:我们需要检查自定义" companyId属性的值,并将其与公司名称进行比较。容易。

但用户名怎么样?是否安全,或者是否遵循最佳做法,检查" operatorId "属性而不是 NameID 属性?或者我们是否应该始终依赖 NameId ,因此需要使用自定义解析逻辑从 NameId 中提取公司和用户名?

你会怎么做?我无法找到类似的案例。

谢谢!

1 个答案:

答案 0 :(得分:0)

它似乎没有遵循您公司的最佳做法:),但是一旦您确认了请求,就是您和您对客户的一致意见。人们会认为它很难维护,因为它是一个例外。