SSOによるログインをフロントエンドで利用する
概要
KurocoはOAuth連携やSAML連携機能を持っており、それらに対応するサービスとのSSO(Single Sign-On)の実装が可能です。 いくつかの外部サービスについてはプリセットとして設定をご用意しておりますので、より簡単に設定できます。
本チュートリアルでは、SSOログインをフロントエンドで利用するため、grant_tokenとアクセストークンの生成方法について説明します。
SSOはGitHubとのOAuth認証を例として説明しますが、IDaaS SP、SAML SPについてもトークンの生成手順はここで説明するOAuthと基本的には同じになります。
学べること
以下の手順でOauth SPによるSSOの実装を学びます。
Kurocoの設定
APIを作成する
SSOログインを実装する際に、Kuroco側に動的トークンによってログイン認証可能なAPIを作成する必要があります。Cookie認証や静的トークンではSSOは実装できませんのでご注意ください。
なお、Kurocoでは複数のAPIを作成出来ますが、ログインセッションはAPI毎に異なります。SSOでログインした場合も、ここで作成するAPIに対してのみログイン状態となり、他のAPIに対してはログインされません。
Kuroco管理画面の[API]をクリックします。 [追加]をクリックします。
[追加する]ダイアログで、以下のように入力し[追加する]をクリックします。
項目 | 設定内容 |
---|---|
タイトル | OAuth検証用API |
版 | 1.0 |
説明 | OAuth検証用API |
並び順 | 0 |
[セキュリティ]をクリックすると以下のダイアログが表示されます。
セキュリティ項目の[動的アクセストークン]を選択し、[保存する]をクリックします。
[新しいエンドポイントの追加]をクリックし、以下のように入力し[追加する]をクリックします。
項目 | 設定内容 | 備考 |
---|---|---|
パス | token | |
カテゴリー | 認証 | |
モデル | Login | |
オペレーション | token | |
use_refresh_token | チェックあり | |
access_token_lifespan | 86400 | 単位[秒]で1日を指定します |
refresh_token_lifespan | 604800 | 単位[秒]で7日を指定します |
以上で、APIの設定が完了しました。
OAuth SP設定を追加する
[外部システム連携] -> [OAuth SP]をクリックします。
[追加]をクリックします。
OAuth SP編集画面が表示されますので、下記を入力して[追加する]をクリックします。
項目 | 設定内容 |
---|---|
OAuth SPの名称 | GitHub login |
ターゲットドメイン | API |
タイプ | GitHub |
(API用) Grantトークン生成 | OAuth検証用API にチェックを入れる |
自動ユーザー登録 | チェックを入れない |
Emailを利用せずメンバー拡張項目にIDを格納してリンクする | チェックを入れない |
リターンURL(成功) | (ログインに成功した直後に表示するページのURL) |
リターンURL(エラー) | (ログインに失敗した直後に表示するページのURL) |
ターゲットドメインが「管理画面」ではなく「API」である事に注意してください。これによりフロントエンド側でのログインに対してSSO機能が有効になります。
以降の手順は GitHubを利用してOAuth認証によるSSOを実装するで説明しているものと同様になりますので、そちらをご参照ください。
フロントエンドでの実装
以下のSSO OAuth SP編集画面に表示されている OAuth検証用API 1.0横のURLをコピーします。
フロントエンドの任意の場所にコピーした[ログインURL]へのリンクを設置します。
<a href="(URL)"><span>GitHubでログイン</span></a>
利用方法
設置したURLへのリンクを確認します。
クリックするとGitHubのログイン画面が開きますので、GitHubのログインIDとパスワードを入力します。
二要素認証を設定している場合は、認証コードの入力フォームが表示されますので、入力します。
ログインに成功すると、OAuth SP設定で設定した[リターンURL(成功)] のURLに遷移します。
SAML認証の場合は、&grant_token=*********
というGET変数が付与された形で[リターンURL(成功)] のURLに遷移します。
grant_tokenはアクセストークンを発行するための一時的なトークンです。こちらを使用してアクセストークンを取得するログイン処理を実装してください。
URLからgrant_tokenをコピーし、SwaggerUIに遷移して上記で作成したエンドポイント/rcms-api/X/token
の[Try it out]をクリックします。
[Request body]書かれているJSONの grant_token
キーの値部分にコピーした文字列をペーストします。
リクエストを送信すると、レスポンスにアクセストークンが含まれていることが確認できます。
このアクセストークンをリクエストヘッダーに付与してリクエストを送ることで、OAuth検証用APIに追加されたエンドポイントをフロントから利用可能です。
関連ドキュメント
サポート
お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。