我目前在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"
答案 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