0

omn​​iauth-shibboleth戦略を利用しようとしています( Rack-samlを使用)。

私の omniauth イニシャライザは次のようになります。

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :shibboleth, {
    :info_fields => {
      :email => 'mail',
    },
    :extra_fields => [:cn, :sn, :schacHomeOrganization],
  }
end

omn​​iauth-shibboleth がomniauth.authENV 変数を設定する必要があるところまではすべて成功していますが、これは部分的なものになります。

つまり、それは正しく検出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
4

1 に答える 1

0

Deviseは Omniauth の初期化自体を処理することが判明し、私はtoggleを使用できましたが、Devise は私が設定した他のオプションを上書きしました。config/initializers/omniauth.rb:debug => true

したがって、 Deviseを使用しているときにOmniauth 戦略を構成する正しい場所は次のとおりです。config/initializers/devise.rb

config.omniauth :shibboleth, {:uid_field => 'eppn',
                     :info_fields => {:email => 'mail', :name => 'cn', :last_name => 'sn'},
                     :extra_fields => [:schacHomeOrganization]
              }

以前は、その行はどの戦略がデフォルトであるかを Devise に示唆するだけだと思っていました。

于 2012-11-03T12:21:53.723 に答える