メインコンテンツまでスキップ

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]をクリックします。 [追加]をクリックします。

[追加する]ダイアログで、以下のように入力し[追加する]をクリックします。

Image from Gyazo

項目設定内容
タイトルOAuth検証用API
1.0
説明OAuth検証用API
並び順0

[セキュリティ]をクリックすると以下のダイアログが表示されます。 Image from Gyazo

セキュリティ項目の[動的アクセストークン]を選択し、[保存する]をクリックします。

[新しいエンドポイントの追加]をクリックし、以下のように入力し[追加する]をクリックします。

Image from Gyazo

項目設定内容備考
パスtoken
カテゴリー認証
モデルLogin
オペレーションtoken
use_refresh_tokenチェックあり
access_token_lifespan86400単位[秒]で1日を指定します
refresh_token_lifespan604800単位[秒]で7日を指定します

以上で、APIの設定が完了しました。

OAuth SP設定を追加する

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

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

Image from Gyazo

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

項目設定内容
OAuth SPの名称GitHub login
ターゲットドメインAPI
タイプGitHub
(API用) Grantトークン生成OAuth検証用API にチェックを入れる
自動ユーザー登録チェックを入れない
Emailを利用せずメンバー拡張項目にIDを格納してリンクするチェックを入れない
リターンURL(成功)(ログインに成功した直後に表示するページのURL)
リターンURL(エラー)(ログインに失敗した直後に表示するページのURL)

Image from Gyazo

ターゲットドメインが「管理画面」ではなく「API」である事に注意してください。これによりフロントエンド側でのログインに対してSSO機能が有効になります。

以降の手順は GitHubを利用してOAuth認証によるSSOを実装するで説明しているものと同様になりますので、そちらをご参照ください。

フロントエンドでの実装

以下のSSO OAuth SP編集画面に表示されている OAuth検証用API 1.0横のURLをコピーします。

Image from Gyazo

フロントエンドの任意の場所にコピーした[ログインURL]へのリンクを設置します。

<a href="(URL)"><span>GitHubでログイン</span></a>

利用方法

設置したURLへのリンクを確認します。 Image from Gyazo

クリックするとGitHubのログイン画面が開きますので、GitHubのログインIDとパスワードを入力します。

Image from Gyazo

二要素認証を設定している場合は、認証コードの入力フォームが表示されますので、入力します。

Image from Gyazo

ログインに成功すると、OAuth SP設定で設定した[リターンURL(成功)] のURLに遷移します。

Image from Gyazo

備考

SAML認証の場合は、&grant_token=********* というGET変数が付与された形で[リターンURL(成功)] のURLに遷移します。
grant_tokenはアクセストークンを発行するための一時的なトークンです。こちらを使用してアクセストークンを取得するログイン処理を実装してください。

URLからgrant_tokenをコピーし、SwaggerUIに遷移して上記で作成したエンドポイント/rcms-api/X/token[Try it out]をクリックします。
[Request body]書かれているJSONの grant_token キーの値部分にコピーした文字列をペーストします。

Image from Gyazo

リクエストを送信すると、レスポンスにアクセストークンが含まれていることが確認できます。

Image from Gyazo

このアクセストークンをリクエストヘッダーに付与してリクエストを送ることで、OAuth検証用APIに追加されたエンドポイントをフロントから利用可能です。

関連ドキュメント


サポート

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