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の方も再度触ってみたいと思います。