我正在尝试了解SSO,SAML和联合身份管理概念。现在,我尝试使用devise_saml_authenticatable作为SP对我的应用进行身份验证;和SSOCircle作为IDP。我正在使用nil属性获取saml_response,查看gem代码,我发现它可能与消费者服务中没有属性的saml_config有关。我的猜测是它与没有config/idp.yml
文件有关。有谁知道这个idp.yml
文件应该是什么样子,应该包含什么?我在repo文档中找不到它。
答案 0 :(得分:1)
以下是我最终解决的问题:
1)我意识到SAML响应包含NoAuthnContxt状态,所以我不得不将我的saml_config authnetication上下文更改为
# config/devise.rb
settings.authn_context = "urn:oasis:names:tc:SAML:2.0:ac:classes:Password"
2)在此之后,我成功地在响应SAML中获得了属性,但是标识符键与attributes.yml
中的标识符不同,我必须更改它们。
# config/attribute-map.yml
# "urn:mace:dir:attribute-def:uid": "uid"
# "urn:mace:dir:attribute-def:email": "email"
# "urn:mace:dir:attribute-def:name": "last_name"
# "urn:mace:dir:attribute-def:givenName": "first_name"
"EmailAddress": "email"
"LastName": "last_name"
"FirstName": "first_name"
答案 1 :(得分:0)
README的usage section具有gem的配置。 saml_config
部分填写了config.saml_configure
,它只为您提供了要配置的RubySaml::Settings
对象(如ruby-saml文档中所述)。
因此,您需要一个名为config/initializers/devise.rb
的文件:
config.saml_configure do |settings|
settings.assertion_consumer_service_url = "http://localhost:3000/users/saml/auth"
# more consumer configuration here
end