外部アカウントを使用したOAuth認証によるSSOを実装する
外部アカウントと連携して、OAuth認証によるSSOを実装する方法を説明します。
このチュートリアルでは例として下記条件でのログインを実装します。
- GitHubのOAuth認証によるログイン
- メンバーに追加されていない場合は新規登録する
- 新規登録したメンバーはGuestのグループに所属させる
GitHub側の仕様の変更により、Client ID、Client secretsの取得方法は本チュートリアルと異なる場合がございます。詳細はGitHubで最新情報をご確認ください。
OAuth SPの設定方法
1. IDを保存するメンバー拡張項目を追加する
まずはGitHubのトークンを保存するための拡張項目を設定します。
[メンバー管理] -> [メンバー]をクリックします。
ページタイトル「メンバー一覧」の上の[メンバー]をクリックし、表示されたプルダウンメニューから、[メンバー詳細設定]をクリックします。
その他の設定の[登録されるメンバーの拡張項目を設定する]をクリックします。
GitHubトークンを保存するため、下記のように項目を追加し、更新するをクリックします。
項目 | 設定内容 |
---|---|
表示名 | GitHubトークン |
データ名 | github_token |
タイプ | テキスト |
2. Kurucoの管理画面でOAuth SP設定を追加する
[外部システム連携] -> [OAuth SP]をクリックします。
[追加]をクリックします。
OAuth SP編集画面が表示されますので、下記を入力して[追加する]をクリックします。
項目 | 設定内容 |
---|---|
OAuth SPの名称 | お好きな名前 |
ターゲットドメイン | 管理画面 |
タイプ | GitHub |
自動ユーザー登録 | チェックを入れて、Guestのグループを設定する |
Emailを利用せずメンバー拡張項目にIDを格納してリンクする | チェックを入れて、GitHubトークンを選択する |
追加されたOAuth SPの編集画面から、ログインURLをメモしておきます。
3. GitHubでOAuth Appsを追加する
次にGitHub側の設定をします。
GitHubのOAuth Appsの設定ページにアクセスし、[New OAuth App]をクリックします。
下記の内容を入力して[Register application]をクリックします。
項目 | 設定内容 |
---|---|
Application name | お好きな名前 |
Homepage URL | サイトのURL |
Authorization callback URL | [2. Kurucoの管理画面でOAuth SP設定を追加する]でメモしたログインURL |
4. GitHubで秘密鍵を生成する
追加されたOAuth Appsのページから[Generate a new client secret]をクリックします。
Client IDと、生成されたClient secretsをメモしておきます。
ページを遷移すると、Client secretsは再度表示できません。
5. Kurocoの管理画面でOAuth SPの設定を更新する
GitHubの設定が完了したら、再度Kurocoの設定に戻ります。
[外部システム連携] -> [OAuth SP]をクリックします。
「2. Kurucoの管理画面でOAuth SP設定を追加する」で追加したOAuth SPの名称をクリックします。
「4. GitHubで秘密鍵を生成する」で取得したクライアントの秘密鍵 (Client Secret)と、クライアントID (Client ID)を入力し、[有効]にチェックを入れて[更新する]をクリックします。
以上で、SSO OAuth SPの設定は完了です。
利用方法
ターゲットドメインを管理画面に設定していると、SP設定の追加後、自動でログインページに「外部アカウントでログイン」の項目が追加されます。
また、SSO OAuth SP編集画面のログインURLにアクセスすると、GitHubのログイン画面に遷移します。こちらのURLを使って独自のログインページを作ることも可能です。
参考
クライアントIDと秘密鍵の入手先
タイプの設定で選択できる主要なアイデンティティプロバイダのクライアントIDと秘密鍵の入手先を下記に示します。
GitHub以外のIdPでSSOを実装する場合は参考にして下さい。
IdP | URL | クライアントID, 秘密鍵の名称 |
---|---|---|
GitHub | https://github.com/settings/developers | Client ID, Client secrets |
https://console.cloud.google.com/apis/credentials | クライアント ID, クライアント シークレット | |
https://developers.facebook.com/apps | アプリID, app secret | |
LINE | https://developers.line.biz/console/ | チャネルID, チャネルシークレット |
カスタムについて
タイプの選択肢にないサービスについても、カスタムのタイプを利用してOAuth認証によるSSOを実装可能です。
まず接続しようとしているアイデンティティプロバイダがOAuth 2.0の仕様をサポートしていることを確認してください。
もしサポートしている場合はアイデンティティプロバイダのドキュメントを確認し、SSO OAuth SPで設定をします。
また、SSO OAuth SP編集画面の[テスト]をクリックすると、設定が正しいかどうかをテストできます。これにより、アイデンティティプロバイダから返されるレスポンスを確認し、それに応じて構成パラメーターの設定が可能です。
保存されていないデータはテストできません。テストを実行する前に、まず設定データを更新する必要があります。
サポート
お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。