2014年2月14日金曜日

【まめ知識】RedmineでGoogle Apps認証!

RedmineをようやくRedhat Linux ESで立ちあげられたのですが、さらにユーザー管理としてGoogle Apps認証に成功したのでメモしておきます。


状況

  • Redmine 2.4.1が導入済み
  • プラグインが使えるようになってる(rake redmine:plugins:migrate RAILS_ENV=production とかしてる)
  • Google Appsの管理権限をもっており、「Google Apps Engine 管理コンソール」が有効になったユーザーを持っている

が条件になります。

Google Cloud Consoleでプロジェクト作成

今回は「redmine_omniauth_google」というredmine用プラグインをつかいます。ただこのプラグインのインストール説明を読んでも、このプロジェクト作成時に躓きます。

  1. 「Google Apps Engine 管理コンソール」が有効になったユーザーで、https://cloud.google.com/console にアクセスする
  2. ダッシュボードより、「Google APIを利用する」をクリックしておきます。
  3. 「CREATE PROJECT」ボタンをクリック
  4. 「Project name」を適当に決め、「Create」ボタンをクリック
  5. 左サイドメニューの「APIs & auth」をクリックして、「Credentials」をクリックします。
  6. OAuthの「CREATE NEW CLIENT ID」ボタンをクリックし、Application typeは「Web application」、Authorized JavaScript originsは「redmineのURLのドメイン(https://hogehoge/redmine/ なら、https://hogehogeでOK)」、Authorized redirect URIは、「redmineのURL/oauth2callback」とします。
  7. 「Create Client ID」をクリック
  8. 「Client ID for web application」項目の、
     Client ID, Client secret の値をメモしておきます。

Redmineに「redmine_omniauth_google」プラグインを導入


https://github.com/twinslash/redmine_omniauth_google
を読んで下さい。

2021-04-12追記
redmine 3.x - 4.1.2 までについては、
の修正版を利用する必要がある。

また 常時SSL(https)で利用する場合、
NGINX だと
 proxy_set_header X-Forwarded-Proto $scheme;
Apacheだと
 RequestHeader set X_FORWARDED_PROTO 'https'
の追加設定が必要になることに注意。
そうしなければ、back_url が http になってしまい、Google OAuth(https必須)なのに http:// .... / oauth2callback に接続してエラーになるため。


redmine_omniauth_googleの設定

管理者でredmineにログインし、「管理」→「プラグイン」にアクセスすると、「Redmine Omniauth Google plugin」が出ているはずです。

「設定」をクリックして、先ほどメモしたClient ID, Client secret を入力してください。
また、必ず「Available domains」にGoogle Appsのドメイン名を入れて下さい。
これを入れないと、他のGoogle Appsや一般のGoogleアカウントでのログインが出来てしまうためです。
そして「Oauth authentificaiton」はチェックを入れておきましょう。
ログイン画面に、Googleでの認証アイコンが出てきます。

実際の運用

デフォルト設定では、登録されたGoogle Appsドメインのアカウントした状態でアクセスすると、自動的にredmineへの登録申請がされます。
この段階ではredmineの管理者が承認しないかぎり、ユーザーは作成されず保留状態になります。

セキュリティ対策


redmineで下記の設定は必ずしておきましょう管理 
  • 管理 - 認証 - 「認証が必要」にチェック
  • 管理 - 認証 - 「ユーザーによるアカウント削除の許可」のチェックを外す
  • 管理 - 認証 - 有効期限の最大値:「日数制限する」(1日とか)
  • 管理 - 認証 - 無操作タイムアウト:「時間制限する」(1時間か2時間程度か)
特に有効期限とタイムアウトについては要注意です。
redmineをログアウトしていたとしても、Googleアカウントのログアウトをしていなければ、ブラウザを終了していたとしても再びログインできてしまう可能性があるためです。不特定多数が利用する端末は特に注意が必要です。とりあえず有効期限を設けておけば、そこでセッションが切れますので、再度ログインを聞いてきます。

ローカルユーザーも併用可能


従来のログインとパスワードでログインすることで可能です。
しかしGoogleアカウントでGoogleにログインしてしまっていると、そちらが優先されます。従ってGoogleからログアウトしてから、アクセスしましょう。

ローカルユーザーでGoogle Appsのメールアドレスを登録時の注意


認証はこのメールアドレスでされます。
従ってローカルユーザーのメールアドレスが、Google Appsのアカウントの物であった場合、そのアカウントでGoogleにログイン済なら、redmineもそのローカルユーザーでログインしたことになります。

ローカルページなら、自動登録もあり


redmineサイト自体を、Google Appsアカウントユーザーでロック(SSL+BASIC認証等)しているなら、毎回管理者が承認する手順は省いてもいいでしょう。
  • 管理 - 認証 - ユーザーによるアカウント登録(自動でアカウントを有効化)
つまりサイト自体がすでにローカルメンバーしかアクセスできないのだから、自動登録でいいでしょうってことです。これならGoogle AppsアカウントでGmailにアクセスしている等Googleにログインしていれば、redmineのログイン画面にアクセスすることで自動的にredmineにユーザーが登録されます。

なお「メールでアカウントを有効化」にして、自動ではあるけれどミスを回避するっていう手もあるかなと思います。

0 件のコメント:

コメントを投稿