8

OpenProject OmniAuth SAML Single-Sign Onプラグインを使用して、OpenProject との SSO(Single Sign-On) 統合をセットアップしようとしています。関連する詳細で構成しました。メタデータを生成し、Shibboleth を利用する IDP に登録しました。プラグインは、openproject ログイン フォームに追加のログイン ボタンを表示します。それをクリックすると、IDP のログイン ページに適切にリダイレクトされます。資格情報を提供すると、前述の AssertionConsumerService URL に正しくリダイレ​​クトされます。の形https://example.com/openproject/auth/saml/callbackです。しかし、ページには不正なリクエスト エラーが表示されています。ファイルをデバッグするapp/controllers/concerns/omniauth_login.rbと、関数内でomniauth_login次のコード行によって 400 エラーが発生することがわかりました。

auth_hash = request.env['omniauth.auth']

return render_400 unless auth_hash.valid?

の値auth_hashが空のようです。これは、属性マッピングまたはその他の原因による問題でしょうか? 私は PHP バックグラウンドから来ており、Ruby on Rails の経験はありません。そのため、問題をデバッグするのは困難です。私はグーグルをたくさん試しましたが、役に立つものは何も見つかりませんでした。

どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

1

次のコードを置き換えます

uid { @name_id }

次のコードで

  uid do
        if options.uid_attribute
          ret = find_attribute_by([options.uid_attribute])
          if ret.nil?
            raise OmniAuth::Strategies::SAML::ValidationError.new("SAML response missing '#{options.uid_attribute}' attribute")
          end
          ret
        else
          @name_id
        end
      end

内部

戦略/saml.rb

ファイル。def other_phase関数の中にあり ます

参考までに、次の github リンクを参照して ください https://github.com/omniauth/omniauth-saml/blob/master/lib/omniauth/strategies/saml.rb行番号 90

于 2017-09-14T13:39:50.077 に答える