OneLogin ruby​​客户端如何识别用户的nameID

时间:2016-06-23 12:20:19

标签: ruby saml onelogin

我使用OneLogin SAML测试连接器作为带有ruby-saml gem和提供的示例程序的模拟IDP。这工作正常。

在我的真实应用中,我们是SP,并且有多个身份提供商,每个提供商都有多个用户需要SSO到我们的应用。

我观察到,在示例应用中,我的AuthnRequest没有在任何地方定义用户的nameID(电子邮件地址),而是以数字ID的形式将其附加到IDP URL。例如https://app.onelogin.com/saml/metadata/5551212其中app.onelogin.com标识IDP,5551212标识“用户”。我意识到,当onelogin是IDP时,“用户”实际上是一个应用程序ID,但在我们的例子中,我们希望它识别一个真实的用户,而不是一个应用程序。

  1. AuthnRequest是否包含nameID元素是否正确?
  2. 我应该使用数字ID在IDP的URL中识别用户吗?数字ID必须在各方之间脱机共享,并且必须在初始URL中传输。我喜欢这种方法,因为它不会在URL中暴露任何识别信息,例如电子邮件地址。
  3. 我应该通过Base64编码电子邮件地址并将其附加到URL来识别用户吗?这不太安全,但可能没问题,因为传输总是使用SSL加密。它避免了脱机握手和共享数字ID。

2 个答案:

答案 0 :(得分:0)

  

AuthnRequest未定义用户的nameID(电子邮件地址)   在任何地方,但它以a的形式附加到IDP URL   数字ID。

这不是真的,数字ID在内部识别IdP,而不是用户。

  1. 是,请检查SAML standard,saml:主题是可选的。 SAML2int个人资料说AuthNRequest消息不得包含saml:Subject。
  2. 没有
  3. 没有
  4. 您不需要将用户信息传递给IdP,您只需向SSO端点发送AuthNRequest,并向用户显示用于显示用户名/密码的表单(如果已存在活动会话)此验证不是必需的。然后SAMLResponse将被发送回SP的Assertion Consumer Service端点。

答案 1 :(得分:0)

正确。查看https://www.samltool.com/base64.php以查看响应属性。