RedmineをSAML認証に対応させる

投稿者: | 2014年5月13日

RedmineをSAML認証に対応させ、SSO出来るようにするmemo

OpenAM 11と連携させた時の設定例です。
Redmineは2.0.0以上である必要があり、正常に動作していることが前提

Ruby とか Rails とか全然わかってないので、とりあえず動いたって言うレベル

  1. GitHubから、以下のプラグインをダウンロードし、pluginsディレクトリに展開します。
    chrodriguez/redmine_omniauth_saml · GitHub.
  2. bundle installを実行し、依存関係を解決します。
  3. Redmineのルートディレクトリで、以下のコマンドを実行
    setenv RAILS_ENV production
    rake redmine:plugins
  4. 展開した中にある sample-saml-initializers.rb を Redmineのルートディレクトリにある
    config/initializers へ saml.rb としてコピー
  5. saml.rb を編集
  6. Redmineのインスタンスを再起動
  7. 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をSAML認証に対応させる」への2件のフィードバック

  1. koba

    まさしく Redmine と OpenAM を SAML で連携させたいと試行錯誤しており、
    いくつか教えていただきたいのですが、
    OpenAM側にredmine側のmetadataを登録しなければいけないと思うのですが
    どの具体的にはどのように行うのでしょうか?
    またruby側の:idp_cert_fingerprint は、どこの値を指定するのでしょうか?
    初歩的な質問でお手数ですが、教えて頂けると助かります。

    返信
  2. TATSUYA

    >kobaさん
    こんにちは。返答が遅くなってしまい申し訳ありません。

    Redmine側はOpenAMのようにMetadataを持っていないため、手動でOpenAMに登録する必要があります。

    idp_cert_fingerprintについてはOpenAM側の証明書のFingerprintになりますね。

    現在、OpenAMではなくADFSとの連携を模索していて、手元にOpenAMの環境がないため、
    はっきりした回答ではなくすみません。

    ちょっと時間を見て、OpenAMの方も再度触ってみたいと思います。

    返信

TATSUYA へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください