外部アカウントを使用したOAuth認証によるSSOを実装する

外部アカウントと連携して、OAuth認証によるSSOを実装する方法を説明します。
このチュートリアルでは例として下記条件でのログインを実装します。

  • GitHubのOAuth認証によるログイン
  • メンバーに追加されていない場合は新規登録する
  • 新規登録したメンバーはGuestのグループに所属させる

GitHub側の仕様の変更により、Client ID、Client secretsの取得方法は本チュートリアルと異なる場合がございます。詳細はGitHubで最新情報をご確認ください。

OAuth SPの設定方法

1. IDを保存するメンバー拡張項目を追加する

まずはGitHubのトークンを保存するための拡張項目を設定します。
[キャンペーン] -> [メンバー]をクリックします。
fetched from Gyazo

ページタイトル「メンバー一覧」の上の[メンバー]をクリックし、表示されたプルダウンメニューから、[メンバー詳細設定]をクリックします。
fetched from Gyazo

その他の設定の[登録されるメンバーの拡張項目を設定する]をクリックします。
fetched from Gyazo

GitHubトークンを保存するため、下記のように項目を追加し、更新するをクリックします。

項目設定内容
表示名GitHubトークン
データ名github_token
タイプテキスト

fetched from Gyazo

2. Kurucoの管理画面でOAuth SP設定を追加する

[外部システム連携] -> [OAuth SP]をクリックします。
fetched from Gyazo

[SPを追加]をクリックします。 fetched from Gyazo

OAuth SP編集画面が表示されますので、下記を入力して[追加する]をクリックします。

項目設定内容
OAuth SPの名称お好きな名前
ターゲットドメイン管理画面
タイプGitHub
自動ユーザー登録チェックを入れて、Guestのグループを設定する
Emailを利用せずメンバー拡張項目にIDを格納してリンクするチェックを入れて、GitHubトークンを選択する

fetched from Gyazo

追加されたOAuth SPの編集画面から、ログインURLをメモしておきます。
fetched from Gyazo

3. GitHubでOAuth Appsを追加する

次にGitHub側の設定をします。
GitHubのOAuth Appsの設定ページにアクセスし、[New OAuth App]をクリックします。
fetched from Gyazo

下記の内容を入力して[Register application]をクリックします。

項目設定内容
Application nameお好きな名前
Homepage URLサイトのURL
Authorization callback URL[2. Kurucoの管理画面でOAuth SP設定を追加する]でメモしたログインURL

fetched from Gyazo

4. GitHubで秘密鍵を生成する

追加されたOAuth Appsのページから[Generate a new client secret]をクリックします。
fetched from Gyazo

Client IDと、生成されたClient secretsをメモしておきます。
ページを遷移すると、Client secretsは再度表示できません。
fetched from Gyazo

5. Kurocoの管理画面でOAuth SPの設定を更新する

GitHubの設定が完了したら、再度Kurocoの設定に戻ります。
[外部システム連携] -> [OAuth SP]をクリックします。
fetched from Gyazo

「2. Kurucoの管理画面でOAuth SP設定を追加する」で追加したOAuth SPの名称をクリックします。
fetched from Gyazo

「4. GitHubで秘密鍵を生成する」で取得したクライアントの秘密鍵 (Client Secret)と、クライアントID (Client ID)を入力し、[有効]にチェックを入れて[更新する]をクリックします。
fetched from Gyazo

以上で、SSO OAuth SPの設定は完了です。

利用方法

ターゲットドメインを管理画面に設定していると、SP設定の追加後、自動でログインページに「外部アカウントでログイン」の項目が追加されます。
fetched from Gyazo

また、SSO OAuth SP編集画面のログインURLにアクセスすると、GitHubのログイン画面に遷移します。こちらのURLを使って独自のログインページを作ることも可能です。

fetched from Gyazo

参考

クライアントIDと秘密鍵の入手先

タイプの設定で選択できる主要なアイデンティティプロバイダのクライアントIDと秘密鍵の入手先を下記に示します。
GitHub以外のIdPでSSOを実装する場合は参考にして下さい。

IdPURLクライアントID, 秘密鍵の名称
GitHubhttps://github.com/settings/developersClient ID, Client secrets
Googlehttps://console.cloud.google.com/apis/credentialsクライアント ID, クライアント シークレット
Facebookhttps://developers.facebook.com/appsアプリID, app secret

カスタムについて

タイプの選択肢にないサービスについても、カスタムのタイプを利用してOAuth認証によるSSOを実装可能です。
まず接続しようとしているアイデンティティプロバイダがOAuth 2.0の仕様をサポートしていることを確認してください。 もしサポートしている場合はアイデンティティプロバイダのドキュメントを確認し、SSO OAuth SPで設定をします。

また、SSO OAuth SP編集画面の[テスト]をクリックすると、設定が正しいかどうかをテストできます。これにより、アイデンティティプロバイダから返されるレスポンスを確認し、それに応じて構成パラメーターの設定が可能です。

fetched from Gyazo

保存されていないデータはテストできません。テストを実行する前に、まず設定データを更新する必要があります。

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。