Keycloak シングルサインオン(デプロイメントプラン)¶
概要¶
Guanceデプロイメントプランは、OpenID Connect および OAuth 2.0 の 2 つのプロトコルに基づくシングルサインオンをサポートしています。本ドキュメントでは、Keycloak ログインを例に説明します。
Keycloak は、最新のアプリケーションおよび分散型サービス向けのオープンソースの ID 認証・アクセス制御ソリューションです。Guanceデプロイメントプランは、OpenID Connect プロトコルに基づき、企業の Keycloak アカウントによるシングルサインオンで Guance プラットフォームにアクセスし、対応するワークスペースのリソースを利用できるようにします。別途企業/チームの Guance アカウントを作成する必要はありません。
注意: 本ドキュメントは、OpenID Connect プロトコルを使用し、Keycloak のバージョンが 18.0.2 以下の場合に適用されます。
用語説明¶
| 用語 | 説明 |
|---|---|
| Realm | 領域。ワークスペースに類似。ユーザー、認証情報、ロール、ユーザーグループを管理するためのもので、領域間は相互に隔離されます。 |
| Clients | Keycloak に対してユーザー認証を要求できるアプリケーションまたはサービス。 |
| Users | システムにログインできるユーザーアカウント。ログイン用メールアドレスと Credentials の設定が必要です。 |
| Credentials | ユーザー ID を検証するための認証情報。ユーザーアカウントのログインパスワードの設定に使用できます。 |
| Authentication | ユーザーを識別および検証するプロセス。 |
| Authorization | ユーザーにアクセス権限を付与するプロセス。 |
| Roles | 管理者、一般ユーザーなど、ユーザーの ID タイプを識別するために使用されます。 |
| User role mapping | ユーザーとロール間のマッピング関係。1 人のユーザーに複数のロールを関連付けることができます。 |
| Groups | ユーザーグループを管理し、ロールをグループにマッピングすることをサポートします。 |
操作手順¶
1. Keycloak realm の作成¶
注意:Keycloak 自体にはマスタードメイン(Master)がありますが、新しい領域(ワークスペースに類似)を作成する必要があります。
1)Keycloak 管理コンソールで、Master > Add realm をクリックします。
2)Add realm ページで、Name に領域名(例: "gcy")を入力し、Create をクリックすると、新しい領域が作成されます。
2. Client の作成と openid-connect プロトコルの設定¶
注意:この手順では、Keycloak クライアントを作成し、openid-connect プロトコルを設定して、Keycloak と Guance の間の信頼関係を確立します。
1)新しく作成した "gcy" 領域で、Client をクリックし、右側で Create をクリックします。
2)Add Client で以下の内容を入力し、Save をクリックします。
Client 作成後、以下のスクリーンショットの通りに設定し、Save をクリックします。
- Client Protocol:openid-connect
- Access Type:confidential
- Standard Flow Enabled:ON
- Direct Access Grants Enabled:ON
- Service Accounts Enabled:ON
- Valid Redirect URIs:*
3. Keycloak ユーザーの設定¶
4. Guance Launcher の設定¶
1)Guance Launcher の ネームスペース:forethought-core > core で、Keycloak の基本情報を設定します。
# OIDC クライアント設定(この設定で wellKnowURL が設定されている場合、KeyCloakPassSet 設定は自動的に無効になります)
OIDCClientSet:
# OIDC Endpoints 設定アドレス。完全な `https://xxx.xxx.com/xx/.well-known/openid-configuration` アドレスです。
wellKnowURL:
# 認証サービスによって提供されるクライアント ID
clientId:
# クライアントの Secret key
clientSecret:
# 認証方式。現在は authorization_code のみサポート
grantType: authorization_code
verify: false
# データアクセス範囲
scope: "openid profile email address"
# 認証サーバーでの認証成功後のコールバックアドレス
innerUrl: "{}://{}/oidc/callback"
# 認証サービスでの認証成功後、DF システムにコールバックした後、DF システムがユーザー情報を取得し、フロントエンドの中間ページにリダイレクトするアドレス
frontUrl: "{}://{}/tomiddlepage?uuid={}"
# 認証サービスから取得したアカウント情報と DF システムのアカウントとのマッピング設定。必須項目:username、email、exterId
mapping:
# 認証サービスにおけるログインアカウントのユーザー名。必須。値が存在しない場合は email を使用
username: preferred_username
# 認証サービスにおけるログインアカウントのメールアドレス。必須
email: email
# 認証サービスにおけるログインアカウントの電話番号フィールド名。任意
mobile: phone_number
# 認証サービスにおけるログインアカウントの一意識別子。必須
exterId: sub
参考図:
上記の参考図の "wellKnowURL:" は、Realm Settings > General > Endpoints で取得できます。
参考図の "clientSecret:" は、Client > Client ID(例:Guance) > Credentials で取得できます。
2)Guance Launcher の ネームスペース:forethought-webclient > frontNginx で、リダイレクト情報を設定します。
# =========OIDC プロトコル リダイレクト関連設定 開始=========
# リクエストを直接 Inner API にリダイレクトするインターフェース =========開始=========
# このアドレスはサードパーティログイン時のアクセスアドレスです。必要に応じて変更可能ですが、proxy_pass のルーティングアドレスは変更しないでください。
location /oidc/login {
proxy_connect_timeout 5;
proxy_send_timeout 5;
proxy_read_timeout 300;
proxy_http_version 1.1;
proxy_set_header Connection "keep-alive";
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
proxy_pass http://inner.forethought-core:5000/api/v1/inner/oidc/login;
}
# このアドレスは、サードパーティサービスが OIDC プロトコルによる認証に成功した後、本サービスにコールバックするためのアドレスです。このアドレスは、【3.2.1】設定の OIDCClientSet 設定項目の innerUrl 設定と直接関連しています。このアドレスを変更する場合は、innerUrl と同時に変更する必要があります。proxy_pass の値は変更しないでください。
location /oidc/callback {
proxy_connect_timeout 5;
proxy_send_timeout 5;
proxy_read_timeout 300;
proxy_http_version 1.1;
proxy_set_header Connection "keep-alive";
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
proxy_pass http://inner.forethought-core:5000/api/v1/inner/oidc/callback;
}
# =========OIDC プロトコル リダイレクト関連設定 終了=========
参考図:
3)Guance Launcher の ネームスペース:forethought-webclient > frontWeb で、Keycloak ユーザーが Guance デプロイメントプランにログインするためのエントリアドレスを設定します。
window.DEPLOYCONFIG = {
......
paasCustomLoginInfo:[
{url:"http://Guanceのデプロイメントドメイン/oidc/login",label:"Keycloak ログイン"}
],
paasCustomLoginUrl: "https://<お客様提供のログアウトアドレス>?redirect_url=https://GuanceWeb端ログインドメインアドレス/oidc/login"
......
};
参考図:
4)設定が完了したら、更新した設定を変更にチェックを入れ、再起動を確認します。
5. Keycloak アカウントを使用した Guance へのシングルサインオン¶
すべての設定が完了したら、シングルサインオンを使用して Guance にログインできます。
1)Guance デプロイメントプランのログインアドレスを開き、ログインページで Keycloak シングルサインオン を選択します。
2)Keycloak で設定したメールアドレスを入力します。
3)ログインパスワードを更新します。
4)Guance の対応するワークスペースにログインします。
Warning
- 「現在のアカウントはどのワークスペースにも参加していません。管理バックエンドに移動して、このアカウントをワークスペースに追加してください。」と表示された場合は、Guance 管理バックエンドにログインして、ユーザーにワークスペースを追加する必要があります。
詳細については、ドキュメント デプロイメントプランのワークスペース管理 を参照してください。
Guance 管理バックエンドでユーザーにワークスペースを追加すると、ユーザーは Guance の使用を開始できます。
















