RedmineをSAML認証に対応させ、SSO出来るようにするmemo
OpenAM 11と連携させた時の設定例です。
Redmineは2.0.0以上である必要があり、正常に動作していることが前提
Ruby とか Rails とか全然わかってないので、とりあえず動いたって言うレベル
- GitHubから、以下のプラグインをダウンロードし、pluginsディレクトリに展開します。
chrodriguez/redmine_omniauth_saml · GitHub. - bundle installを実行し、依存関係を解決します。
- Redmineのルートディレクトリで、以下のコマンドを実行
setenv RAILS_ENV production
rake redmine:plugins - 展開した中にある sample-saml-initializers.rb を Redmineのルートディレクトリにある
config/initializers へ saml.rb としてコピー - saml.rb を編集
- Redmineのインスタンスを再起動
- Redmineの管理 → プラグイン → Redmine Omniauth SAML plugin で必要に応じて設定する
saml.rbは以下の感じ
RedmineSAML = HashWithIndifferentAccess.new( :assertion_consumer_service_url => "http://redmine.example.local:9000/auth/saml/callback", :issuer => "http://redmine.example.local:9000/", :idp_sso_target_url => "http://openam.example.local:8080/OpenAM-11.0.0/SSORedirect/metaAlias/idp", :idp_cert_fingerprint => "DE:........:33", # SSL SHA-1 fingerprint :name_identifier_format => "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", :attribute_mapping => { :login => 'extra.raw_info.EmailAddress', :firstname => 'extra.raw_info.givenname', :lastname => 'extra.raw_info.sn', :mail => 'extra.raw_info.EmailAddress' } ) Rails.application.config.middleware.use OmniAuth::Builder do provider :saml, RedmineSAML end
まさしく Redmine と OpenAM を SAML で連携させたいと試行錯誤しており、
いくつか教えていただきたいのですが、
OpenAM側にredmine側のmetadataを登録しなければいけないと思うのですが
どの具体的にはどのように行うのでしょうか?
またruby側の:idp_cert_fingerprint は、どこの値を指定するのでしょうか?
初歩的な質問でお手数ですが、教えて頂けると助かります。
>kobaさん
こんにちは。返答が遅くなってしまい申し訳ありません。
Redmine側はOpenAMのようにMetadataを持っていないため、手動でOpenAMに登録する必要があります。
idp_cert_fingerprintについてはOpenAM側の証明書のFingerprintになりますね。
現在、OpenAMではなくADFSとの連携を模索していて、手元にOpenAMの環境がないため、
はっきりした回答ではなくすみません。
ちょっと時間を見て、OpenAMの方も再度触ってみたいと思います。