如何在SAML 2.0中使用电子邮件作为名称标识符格式?

时间:2016-01-28 08:50:29

标签: ruby-on-rails saml-2.0

我目前在SAML 2.0配置中有以下设置:

# config/devise.rb
settings.name_identifier_format = "urn:oasis:names:tc:SAML:2.0:nameid-format:transient"

使用devise_saml_authenticatable gem,这将呈现为:

<samlp:NameIDPolicy
  AllowCreate='true'
  Format='urn:oasis:names:tc:SAML:2.0:nameid-format:persistent' />

返回如下所示的name_id:

<saml:NameID
  Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"
  NameQualifier="http://idp.ssocircle.com">
  lfYRV6q2qqNKhBaEe7F3qzvCacKP
</saml:NameID>

我想使用urn:oasis:names:tc:SAML:2.0:nameid-format:persistent,以便它返回电子邮件地址和name_id。但是我的IDP(SSOCircle)出错了。我应该设置其他配置吗?

# config/devise.rb
settings.name_identifier_format = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"

1 个答案:

答案 0 :(得分:1)

我查看了authenticate_with_saml的实现,如果Devise.saml_use_subject设置为false,它实际上会查找email属性。

if (Devise.saml_use_subject)
  auth_value = saml_response.name_id
else
  inv_attr = attribute_map.invert
  auth_value = attributes[inv_attr[key.to_s]]
  auth_value.try(:downcase!) if Devise.case_insensitive_keys.include?(key)
end
Alli必须做的是将设计设置saml_use_subject更改为

# config/devise.rb
config.saml_use_subject = false