概要
Keycloakを使用したOauth2ドメインの設定方法について説明します。
OAuth2ドメインを設定することで、TDV Serverに対するシングルサインオンが可能となります。
検証環境
| 製品 | バージョン |
|---|---|
| TDV Server | 8.8.1 |
| TDV Studio |
Keycloakの設定
クライアント作成
事前に左のメニューからManage realmsよりクライアントを作成したいレルムに移動しておきます。
管理 > クライアント > クライアントの作成をクリックします。
クライアントタイプはOpenID Connectを選択し、クライアントIDを入力して次へをクリックします。
クライアント認証をオンにし、次へをクリックします。
有効なリダイレクトURIには以下の3種類のURLを登録します。
- http://<TDVのHostname>:9400/oauth2studiocallback
- Studioのログインで使用
- http://<TDVのHostname>:9400/manager
- Managerのログインで使用
- http://<TDVのHostname>:9400/webui
- WebUIのログインで使用
TDVのHostnameの確認・変更方法については以下の記事をご参照ください。
HTTPSでログインする場合は以下のURLも登録します。
- https://<TDVのHostname>:9402/oauth2studiocallback
- https://<TDVのHostname>:9402/manager
- https://<TDVのHostname>:9402/webui
localhostでManagerやWebUIにログインする場合は以下のURLも登録します。
- http://localhost:9400/manager
- http://localhost:9400/webui
最後に保存をクリックします。
マッパーの追加
作成したクライアントの設定ページを開きます。
上部タブからクライアントスコープに移動し、
最上部の<クライアントID>-dedicatedをクリックします。
Configure a new mapperをクリックします。
Group Membershipを選択します。
名前とトークンクレーム名を入力します。
また、Full group pathをオフにし、保存します。
グループ作成
Keycloakのグループを作成します。
既存のグループを使用する場合は、この手順はスキップしてください。
左のメニューから管理 > グループをクリックします。
グループの作成をクリックします。
名前にグループ名を入力します。
例として、グループ名をdeveloperとし、後の手順でこのグループに所属するユーザーにTDVの「開発者」の権限を付与します。
グループが作成されたことを確認し、グループ名をクリックします。
既にユーザーが存在する場合は、上部タブ メンバー > Add memberからユーザーをグループに追加します。
ユーザー作成
先ほど作成したグループにユーザーを作成します。
既にユーザーが存在する場合はこの手順はスキップしてください。
左のメニューから管理 > ユーザーをクリックします。
ユーザーの追加をクリックします。
必要な情報を入力して作成をクリックします。
この時、Join Groupsで先ほど作成したグループを指定します。
ユーザーが作成されたことを確認し、ユーザー名をクリックします。
上部タブより クレデンシャル > パスワードを設定をクリックします。
パスワードを入力して保存をクリックします。
このパスワードは初回ログイン時に使用します。
確認画面が表示されるのでSave passwordをクリックします。
TDVの設定
ドメイン作成
Managerにログインし、セキュリティ > ドメイン管理をクリックします。
ドメインの追加をクリックします。
TypeをOAuth2とし、Nameに任意の名前を入力します。
Allow OAuth login via TDV toolsにチェックを入れます。
以下の表に従い、各種パラメータをTDVに入力します。
| 設定項目 | 値 |
|---|---|
| Issuer Value | https://<Keycloakドメイン名>/realms/<レルム名> |
| User ID Claim | preferred_username |
| Issuer Claim | iss |
| Validation | Auto |
| Claim Info | URI |
| 入力する必要はありません。 | |
| UserInfo URL | <Issuer Value 設定値>/protocol/openid-connect/userinfo |
| Allow OAuth login via TDV tools | ✓ |
| Auth URL | <Issuer Value 設定値>/protocol/openid-connect/auth |
| Token URL | <Issuer Value 設定値>/protocol/openid-connect/token |
| Client ID | 以下の手順を参照してください。 |
| Client Secret | 以下の手順を参照してください。 |
| Audience | 入力する必要はありません。 |
| Scope | openid email profile |
| Revocation URL | <Issuer Value 設定値>/protocol/openid-connect/revoke |
Client ID
Keycloakの左のメニューから管理 > クライアントをクリックし、先ほど作成したクライアントをクリックします。
クライアント IDの値をTDVドメインのClient IDに入力します。
Client Secret
上部タブからクレデンシャルに移動し、クライアントシークレットの値をTDVドメインのClient Secretに入力します。
パラメータが入力できたことを確認し、OKをクリックします。
クレーム追加
Keycloakからログインするユーザーが所属するグループに、権限を付与するための設定を行います。
この操作を行わない場合、Studioでのログイン時に「アクセスツール」権限を含むすべての権限が付与されていないためログインに失敗します。
セキュリティ > クレーム管理をクリックします。
クレームの追加をクリックします。
クレームの情報を入力し、OKをクリックします。
- ドメイン名:Keycloakドメインの名前を入力
- クレーム名:<マッパー追加時に設定したトークンクレーム名>:グループ名
- クレーム権:任意の権限を選択します。今回は「開発者」の権限を付与します。
ログイン方法
Studio
TDV Studioを起動し、OAuth2ドメインを選択します。
接続をクリックします。
Keycloakへのログインが求められるのでユーザー名とパスワードを入力し、サインインをクリックします。
ログインが成功することを確認します。
Manager
Managerのログイン画面にアクセスし、DomainにOauth2ドメインの名前を入力し、Sign inをクリックします。
この時、ユーザー名とパスワードを入力する必要はありません。
Keycloakへのログインが求められるのでユーザーとパスワードを入力してログインします。
ログインが成功することを確認します。
WebUI
WebUIにアクセスすると、Oauth2ドメインがリストされているので、任意のドメインを選択します。
Keycloakへのログインが求められるのでユーザーとパスワードを入力してログインします。
ログインが成功することを確認します。