我正在尝试使用omniauth-shibboleth策略(使用rack-saml)。
我的omniauth初始化程序如下所示:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :shibboleth, {
:info_fields => {
:email => 'mail',
},
:extra_fields => [:cn, :sn, :schacHomeOrganization],
}
end
一切都是成功的,直到omniauth-shibboleth应该设置omniauth.auth
ENV变量,但这最终是部分的。
即-它确实检测到eduPersonPrincipalName
并将其uid
正确传递给归档-我可以看到它。
但它无法填写email
,并且额外的参数cn, sn, schacHomeOrganization
。
我已经验证了request.env
确实包含所有必需的属性,所以问题不在于 Shibboleth 方面。
为了调试,我硬编码了 Gem 文件中的选项lib/omniauth/strategies/shibboleth.rb
:
option :info_fields, {:email => 'mail'}
option :extra_fields, [:cn, :sn, :schacHomeOrganization]
然后一切正常。
因此,我的Omniauth设置或omniauth-shibboleth处理选项的方式似乎存在问题,因此我的配置最终不会与默认值合并。
我究竟做错了什么?
版本:
omniauth - 1.1.1
omniauth-shibboleth - 1.0.8
rack-saml - 0.0.4
pow - 0.4.0