KeycloakとIBM Security Verifyの連携②～IBM Security VerifyとのOIDC連携～

# はじめに
2回目として、KeycloakとIBM Security Verifyの連携を行います。

![keycloak on Docker (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/bcf91b4c-e1ab-c52c-9312-1bf1909500a0.png)

#1.IBM Security Verifyへのアプリケーション登録

IBM Security Verifyで、カスタムアプリケーションを選択し、アプリケーションの追加を行います。

![keycloak on Docker (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/6389d178-0951-84e9-0667-925f3a64d757.png)

サインオンタブは、サインオン方式、アプリケーションURL、リダイレクトURLを設定して保存します。

|設定値|値|備考|
|:--|:--|:--|
|サインオン方式|Open ID Connect 1.0  ||
|アプリケーションのURL |http://localhost:18080/auth/realms/master/account | アプリがないため、Keycloakのアカウント画面を設定|
|リダイレクトURL |http://localhost:18080/auth/realms/master/broker/oidc/endpoint | keycloakのOIDCのエンドポイントを指定|
|proof key for code exchange (PKCE) の検証が必要|チェックをはずす |デフォルトはチェックあり|
|すべての既知のユーザー属性を ID トークンで送信|チェックを入れる |デフォルトはチェックなし。チェックがないとメールアドレスなどKeycloakに登録する属性が連携できないため|


![keycloak on Docker (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/379844e5-5c11-5367-27ab-14e3aa1da9aa.png)


![keycloak on Docker (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/73d04810-bd10-e08d-b271-be0f96174495.png)

資格タブは、すべてのユーザーおよびグループに対する自動アクセスにチェックを入れて保存します。

|設定値|値|備考|
|:--|:--|:--|
|アクセス・タイプ|すべてのユーザーおよびグループに対する自動アクセス |IBM Security Verifyに登録されたすべてのユーザーが利用できる|

#2.Keycloakに渡す情報の取得
IBM Security Verifyのカスタムアプリケーションが発行したクライアントIDとクライアント秘密鍵、および、IBM Security Verifyのエンドポイントをメモします。

|設定値|値|備考|
|:--|:--|:--|
|クライアントID|(自動発行) |カスタムアプリケーション保存時に自動割り当て|
|クライアント秘密鍵|(自動発行) |カスタムアプリケーション保存時に自動割り当て|
|IBM Security Verify エンドポイント|https://<テナント名>.verify.ibm.com/oidc/endpoint/default/.well-known/openid-configuration|サインオンタブの右側のナビゲータに表示|


#3.KeycloakへのIdentity Providerの登録

keycloakの管理画面で、Identity Providersを選択します。

![keycloak on Docker (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/d1233ecd-b337-eaca-94d6-9b66cf51da81.png)

Add ProviderでOpenID Connect V1.0を選択します。
![keycloak on Docker (20).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/65dd5d49-9c74-5f97-a8e6-b320c8601142.png)

以下を参考に設定し、Saveボタンをクリックします。

|設定値|値|備考|
|:--|:--|:--|
|Alias|oidc(idpを示す任意の文字列) ||
|DisplayName|IBM Security Verify(任意の文字列) |Keycloakのログイン画面に表示される文字列|
|Client Authentication|Client secret sent as post ||
|Client ID|IBM Security VerifyのクライアントIDを設定 ||
|Client Secret|IBM Security Verifyのクライアント秘密鍵を設定 ||
|Import from URL|IBM Security VerifyのエンドポイントのURLを指定して、Importボタンをクリック||

![keycloak on Docker (18).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/fa89b202-88a3-27e6-9625-fd39054eabfc.png)

![keycloak on Docker (19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/43735a0b-6da9-ff5c-f9be-003e26951f08.png)

#4.動作確認

今回のアプリケーションに該当するURLにアクセスします。

```
http://localhost:18080/auth/realms/master/account
```
ログイン画面に先ほど登録したIDPであるIBM Security Verifyのボタンが表示されます。
![keycloak on Docker (21).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/05b3581c-bca2-723c-3567-02d1fddf711c.png)

IBM Security VerifyのID/PWDでログインします。
![keycloak on Docker (22).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/aeea6a5a-c9ea-ef48-a0f2-0cd74049df4f.png)

アカウントの更新画面が表示されます。
![keycloak on Docker (24).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/54cebd89-3669-370e-186a-b19cb95ce284.png)

アカウントアプリ画面が表示され、シングルサインオンできていることが確認できます。
![keycloak on Docker (25).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/84b291f5-9a87-2bba-2f26-7f65dbc98b21.png)

Keycloak側にユーザー登録しなくても、IBM Security Verifyのアカウント属性でログインができました。

Keycloakとしてどのようにユーザーを管理しているか確認するため、ユーザー一覧を開きます。

![keycloak on Docker (27).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/9443788f-1db8-f541-ba5a-d5c500d8dc3b.png)

先ほど利用したユーザーをクリックすると、Identity Provider AliasとしてOIDCと表示されています。
Keycloak上のユーザーではなく、外部Identity Provider上のユーザーとして区別されていることがわかります。

![keycloak on Docker (28).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/ad2865f8-d2f2-4f36-8e5f-c001d17cecdf.png)

#最後に

KeycloakにIBM Security Verify のユーザー情報を元にログインできることが確認できました。
Keycloakを元にした商用版パッケージであるRed Hat Single Sign-On にも応用できます。