こんにちは。習慣として日曜は晩酌をしてたのですが、月曜の朝「出社したくないでござる(リモートが良いでござる)」病の一因であることに気づき始めたので、しばらく日曜の晩酌はやめようと思っています。
先月から週5日勤務に変更した吉岡です。
今回は RedMica stable-2.1(Redmine 5.0互換)で SAML認証をしてみたので、その方法について紹介したいと思います。
Azure AD
RedMica stable-2.1(Redmine 5.0互換)
https://github.com/redmica/redmica/tree/stable-2.1
Redmine OmniAuth SAML plugin(プラグイン)
https://github.com/yoshiokaCB/redmine_omniauth_saml
注)既存のプラグインをフォークして、とりあえずRedMicaで動作するように修正しただけですので、利用される際はご注意ください。
※ RedMicaのインストール方法については特に触れません。
※ Azureアカウント, Active Directorry はすでに設定済みであることが前提です。作成方法等については特に触れません。
参考:クイックスタート: エンタープライズ アプリケーションを追加する
https://docs.microsoft.com/ja-jp/azure/active-directory/manage-apps/add-application-portal
http://localhost:3000/auth/saml/metadata
を入力する。)http://localhost:3000/auth/saml/callback
を入力する。以下の設定ファイル config/initializers/saml.rb
の assertion_consumer_service_url と合わせる必要がある。)参考:クイックスタート: エンタープライズ アプリケーションのシングル サインオンを有効にする
https://docs.microsoft.com/ja-jp/azure/active-directory/manage-apps/add-application-portal-setup-sso
参考:クイックスタート: ユーザー アカウントを作成して割り当てる
https://docs.microsoft.com/ja-jp/azure/active-directory/manage-apps/add-application-portal-assign-users
ADの準備ができましたら事前にログインしておきます。
また、後ほどプラグインの設定時に以下の値を使用しますので、メモしておきます。
Plugin インストール
$ git clone https://github.com/yoshiokaCB/redmine_omniauth_saml.git plugin/redmine_omniauth_saml $ bundle install $ rake redmine:plugins
設定ファイル config/initializers/saml.rb
を以下を参考に作成します。
sample: config/initializers/saml.rb
Redmine::OmniAuthSAML::Base.configure do |config| config.saml = { :assertion_consumer_service_url => "http://localhost:3000/auth/saml/callback", # ※1 :issuer => "http://localhost:3000/auth/saml/metadata", # ※1 :single_logout_service_url => "http://localhost:3000/auth/saml/sls", # ※1 :signout_url => "http://localhost:3000/auth/saml/sls", # ※1 :idp_sso_target_url => "https://login.microsoftonline.com/*****/saml2", # Azure AD の「ログイン URL」を使用 :idp_cert_fingerprint => "******************", # Azure AD の「拇印」を使用 :name_identifier_format => "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", :idp_slo_target_url => "https://login.microsoftonline.com/*****/saml2", # Azure AD の「ログアウト URL」を使用 :name_identifier_value => "mail", :login => 'extra raw_info http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name', # ※2 :mail => 'extra raw_info http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name', # ※2 :firstname => 'extra raw_info http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname', # ※2 :lastname => 'extra raw_info http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname' # ※2 } }config.on_login do |omniauth_hash, user| # Implement any hook you want here end end
※1 ドメイン部分(ポート含む)はIdpのアプリケーション登録に合わせて適宜変更してください。
※2 Idpの環境によって適宜変更してください。
ここまで終われば準備完了です。
$ rails server
http://localhost:3000/
にアクセスしまずは初期設定の管理者でログインします。参考までにログイン時の認証方法についてプラグインの仕様を紹介したいと思います。
以下の順に認証をするようになっています。
以上、今回は、RedMica 2.1(Redmine 5.0互換)と Azure AD で SAML認証 をする方法をご紹介させていただきました。 このようにSAMLを使うことでセキュアで、より便利にRedmineにアクセスすることができそうです。
ただ、今回の検証したプラグインでは、以下のような気になる点があることもわかりました。
認証先(Idp)設定情報を Rails.application.config.middleware.use
を利用して設定・保持しているため、認証先の情報を変更する場合、都度アプリケーションの再起動が必要になりそう。
特に問題のないように感じるかもしれませんが、弊社のようにSaaSで提供している場合、設定変更で都度アプリケーションの再起動が実行されるとあまり都合の良くないケースが多く、可能であれば接続情報はDBに保持して、動的に反映できると嬉しい。もちろんセキュリティの面をしっかりと考慮する必要はある。
例えば、Idpのログアウト用らしきコードが書かれているのですが、ログアウト用のリンクは実装されてなさそう(見落としてたらごめんなさい)。実際にRedmineで利用するのかどうか含めて検討が必要そう。
また、現状ですと一度Idp経由でRedmineのアカウントを作成した後、Idpのアプリケーション側でユーザーの割り当てを解除しても、設定によってはパスワード認証でログインできた。(かなりのレアケースですが、修正した方が良いかも)
利用しているライブラリー(Gem)で ruby-saml と omniauth-saml が共存している。どちらも同じく Ruby で SAML認証を行うのに利用するGemですが、両方利用する必要がなるのか要確認する。(なるべく余分なものは入れたくない。管理物は減らしたい。)
ruby-saml のみでSAML認証が簡単にできるため、そちらをベースに一からプラグインを作成するのが良さそう。
と言うことで現在、RedmineでSAML認証できるプラグインを絶賛開発中です。 乞うご期待ください!
![]() |
Redmine 5.0ではZeitwerkが採用され、プラグインがZeitwerkに対応していないとRedmine 5.0は起動しません。 |
![]() |
2年ぶりに「APPS JAPAN 2022」にブースを出展しました。 |
![]() |
社内で開発中のRuby on Rails(以下、Rails)アプリケーションをVer6.1系からVer7.0系にアップデートした手順の一部をご紹介します。 |
![]() |
証跡をマルチリージョン対応し他のサービスを連携して比較的簡単に対応ができました。 |
![]() |
セミナーの開催にあたり準備したことや良かったことをふりかえります。 |
![]() |
社員研修に伴うサポート体制変更・休業のお知らせ(5/20〜23) 社員研修に伴い、5月20日〜23日はサポート体制の変更および休業とさせていただきます。 |
![]() |
オープンソースカンファレンス2025 Nagoyaに弊社代表の前田が登壇(ブース出展あり) オープンソースカンファレンス(OSC)2025 Nagoyaに弊社代表の前田が登壇。『Redmineの意外と知らない便利な機能(Redmine 6.0 対応版)』をテーマに発表します。 |
![]() |
エンタープライズプラン向け「優先サポート」を開始 My Redmineでは、エンタープライズプランをご契約のお客様向けにサポート対応を優先的に行う「優先サポート(プライオリティサポート)」を開始いたしました。 |
![]() |
プロジェクト管理ツール「RedMica」バージョン 3.1.0をリリース Redmine互換のオープンソースソフトウェア ファーエンドテクノロジー株式会社は、2024年11月19日(日本時間)、Redmine互換のプロジェクト管理ソフトウェア「RedMica 3.1.0」をリリースしました。 |
![]() |
Redmineの最新情報をメールでお知らせする「Redmine News」配信中 新バージョンやセキュリティ修正のリリース情報、そのほか最新情報を迅速にお届け |