はじめに
「Auth0を利用すると、SAML認証に対応したSPと簡単にSAML認証できそう」という思い付きと、「cybozu.comはSAML認証可能」ということを掛け合わしたところ、「出来た」ので、行った設定を残しておきたい。
CybozuのSAML認証といえば、この記事。
この記事を読んで、この手順をやってみて、改めてこの記事を読むと、SAML認証の理解が深まるかもしれない。
前提
- cybozu.comの開発者ライセンスが利用可能であること
- Auth0の検証可能なアカウントを持っていること
※Auth0についてはAuth0に関する記事などへ
手順概要
- Auth0にクライアントを作る
- Auth0にユーザーを作る
- Cybozu.comにユーザーを作る
- Auth0に作ったクライアントを設定する
- Auth0からCybozu.comに信頼してもらうための情報を取得する
- Cybozu.comにAuth0を信頼してもらう
- Cybozu.comにアクセスしてSAML認証する
手順
以下、実際の手順。
はじめにAuth0とCybozu.comに管理者権限でログインしておくこと。
1. Auth0にクライアントを作る
(1) Auth0 クライアント作成画面を開く
- Auth0のDashboardの左側のメニューで、[Clients]をクリックしてClients画面を開き、[+CREATE CLIENT]ボタンをクリックする。
(2) クライアント作成
- Nameに任意のクライアント名を入力する。 例)Cybozu.com
- [Regular Web Applications]を選択する。
- [CREATE]ボタンをクリックする。
クライアントについては、一旦ここまでで次の手順へ。
(クライアントがないとDB Connectionが有効にできないようなので先に作成)
2. Auth0にユーザーを作る
Auth0にユーザーを作るにあたって、先にAuth0の内部データベース(DB CONNECTION)を作成する。
すでに利用可能なDB CONNECTIONが存在する場合や、他のConnectionを使う場合は省略しても良い。その場合は(4)へ。
(1) Auth0 DB CONNECTION作成画面を開く
- Auth0のDashboardの左側のメニューで、[Connections]→[Database]とクリックしてDatabase管理画面を開き、[+CREATE DB CONNECTION]ボタンをクリックする。
(2) Database Connectionの作成
- Nameに任意のデータベース名を入力する。 例)"CybozuUserDB"
- Requires Username を有効にする。 (無効でも良い。有効の方がログインしやすいという理由のみ。)
- [CREATE]ボタンをクリックしてDB CONNECTIONを作る。
(3) 利用するクライアント設定
- [Clients]をクリックし、クライアントを表示する。
- 先に作成したクライアントを、利用するクライアントとして設定する。
(4) ユーザー作成画面を開く
- 左側のメニューで、[Users]をクリックしてユーザー管理画面を開き、[+ CREATE USER]ボタンをクリックする。
(5) ユーザー作成
- Emailを含む全ての項目を入力し、Connectionに追加した DB Connectionを選択する。
- [SAVE]ボタンを押してユーザーを作成する。
(後の認証は、ここで入力する Username と Password で行う。)
3. Cybozu.comにユーザーを作る
続いて Cybozu.com にユーザーを作成するが、それに当たって Cybozu.com のユーザーと Auth0 のユーザーを紐付ける情報が必要になる。
結論を先に書くと、Auth0のユーザーの user_id を、Cybozu.comのユーザーのログイン名として設定する。
(1) Auth0で user_id を確認
- User Details 画面(ユーザーを作成後に表示された画面)を下にスクロールし、Identity Provider Attributesの user_id の値(以下の黒塗り部分を含む全て)をコピーする。
(Auth0にユーザーを作らずに他のConnectionの既存ユーザーを利用する場合でも、同様にuser_idをCybozu.comのログイン名にすれば良い)
(2) Cybozu.com [組織/ユーザー]設定を開く
- Cybozu.com の共通管理を開き、左側のメニューの[組織/ユーザー]をクリックする。
(3) ユーザーの追加
- [ユーザーの追加]ボタンをクリックする。
(4) ユーザー情報を入力し保存
- [表示名]に任意の名称を入力する。
- [ログイン名]に、コピーした[user_id]を入力する。
- [保存]ボタンを押す。
- パスワードの設定は[自動生成する]のまま[設定]ボタンを押す。
4. Auth0に作ったクライアントを設定する
(1) Auth0のクライアント設定画面を開く
- Auth0の左側のメニューの[Clients]をクリックし、先に作成したクライアントの設定アイコンをクリックして設定画面を開く。
(2) Allowed Callback URLsを入力
- 入力するURLは「https://(sub_domain).cybozu.com/saml/acs」で、(sub_domain)は開発者ライセンスに割り当てられたサブドメイン。
([Token Endpoint Authentication Method]はPostでOK)
(3) 一度保存
- [SAVE CHANGES]ボタンを押して一度保存する。
(4) アドオンを設定
- 画面上部の[Addons]をクリックし、アドオン設定画面を開く。
- [SAML2]をクリックする。
- [Application Callback URL]に、前述の「https://(sub_domain).cybozu.com/saml/acs」と同じURLを入力する。
- 画面下部の[SAVE]ボタンを押して一度保存する。
(5) 動作確認
- 画面中部の[DEBUG]ボタンを押して動作確認を行う。
- ブラウザの新規タブでログイン画面が表示されるため、Auth0に作成したユーザーの Username と Password を入力して、[LOG IN>]ボタンを押す。
- 正常に動作していることを確認する。
5. Auth0からCybozu.comに信頼してもらうための情報を取得する
(1) クライアント設定の詳細を表示
- [Settings]をクリックして、再度クライアントの設定画面を開く。
- 画面下部の[Show Advanced Settings]をクリックして詳細を表示する。
- 詳細エリアの[Certificates]をクリックする。
(2) 証明書をダウンロード
- [DOWNLOAD CERTIFICATE]をクリックする。
- [CER]をクリックし、〜.cerファイルをダウンロードする。
(後ほどCybozu.comにアップロードする)
(3) エンドポイントURLを確認
- [Endpoints]をクリックする。
- [SAML Protocol URL]の右のアイコンをクリックし、URLをクリップボードにコピーする。
6. Cybozu.comにAuth0を信頼してもらう
(1) Cybozu.com共通管理→システム管理→[ログイン]設定を開く
- Cybozu.comの共通管理のメニューのシステム管理→[ログイン]をクリックする。
(2) SAML認証の設定
- まず、[SAML認証を有効にする]のチェックボックスをオンにする。
- 続いて、[Identity ProviderのSSOエンドポイントURL]に、クリップボードにコピーしたURLを貼り付ける。
- [cybozu.comからのログアウト後に遷移するURL]を入力する。
- 次に、[参照]ボタンを押して、Auth0からダウンロードした証明書をアップロードする。
- 最後に[保存]ボタンを押して設定を保存する。
(画面は一度SAML設定済みのものであるため、新規に設定する場合と多少異なる)
7. Cybozu.comにアクセスして認証する
- 「https://(sub_domain).cybozu.com/」を開く
- Auth0にリダイレクトされ、認証画面が開くので、Autu0で作成したユーザーの Username、Passwordを入力してログインする。
- 認証が成功すると、Cybozu.comにリダイレクトされ、ログイン後画面が表示される。
補足
-
認証時にエラーになる場合、SAML認証のトラブルシューティングを参照
-
Cybozu.comでSAML認証が有効な場合でも、以下のURLで直接認証が可能
https://(sub_domain).cybozu.com/login?saml=off