devise_saml_authenticatable响应不包含属性

时间:2016-01-26 05:52:14

标签: ruby-on-rails saml-2.0

我正在尝试了解SSO,SAML和联合身份管理概念。现在,我尝试使用devise_saml_authenticatable作为SP对我的应用进行身份验证;和SSOCircle作为IDP。我正在使用nil属性获取saml_response,查看gem代码,我发现它可能与消费者服务中没有属性的saml_config有关。我的猜测是它与没有config/idp.yml文件有关。有谁知道这个idp.yml文件应该是什么样子,应该包含什么?我在repo文档中找不到它。

2 个答案:

答案 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