

AWS Mainframe Modernization Service (マネージドランタイム環境エクスペリエンス) は、新規のお客様に公開されなくなりました。 AWS Mainframe Modernization Service (マネージドランタイム環境エクスペリエンス) と同様の機能については、 AWS Mainframe Modernization Service (セルフマネージドエクスペリエンス) をご覧ください。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、[AWS 「 Mainframe Modernization の可用性の変更](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Keycloak で Gapwalk OAuth2 認証を設定する
<a name="ba-runtime-auth-keycloak"></a>

このトピックでは、Keycloak を ID プロバイダー (IdP) として使用し、Gapwalk アプリケーションに OAuth2 認証を設定する方法について説明します。このチュートリアルでは Keycloak 24.0.0 を使用します。

## 前提条件
<a name="ba-runtime-auth-keycloak-prereq"></a>
+ [Keycloak](https://www.keycloak.org/)
+ Gapwalk アプリケーション

## Keycloak の設定
<a name="keycloak-setup"></a>

1. ウェブブラウザで Keycloak ダッシュボードに移動します。デフォルトの認証情報は admin/admin です。左上のナビゲーションバーに移動し、次の画像に示すように **demo** という名前の領域を作成します。  
![\[alt_text\]](http://docs.aws.amazon.com/ja_jp/m2/latest/userguide/images/ba-runtime-auth-keycloak_2.png)

1. **app-demo** という名前のクライアントを作成します。  
![\[User interface for creating a new client in an authentication management system.\]](http://docs.aws.amazon.com/ja_jp/m2/latest/userguide/images/ba-runtime-auth-keycloak_3.jpg)

   `localhost:8080` は Gapwalk アプリケーションのアドレスに置き換えてください。  
![\[alt_text\]](http://docs.aws.amazon.com/ja_jp/m2/latest/userguide/images/ba-runtime-auth-keycloak_4.png)  
![\[alt_text\]](http://docs.aws.amazon.com/ja_jp/m2/latest/userguide/images/ba-runtime-auth-keycloak_5.png)

1. クライアントシークレットを取得するために、**[クライアント]**、**[app-demo]**、**[認証情報]** を選択します。  
![\[alt_text\]](http://docs.aws.amazon.com/ja_jp/m2/latest/userguide/images/ba-runtime-auth-keycloak_6.jpg)

1. **[クライアント]**、**[クライアントの範囲]**、**[事前定義されたマッパーを追加]** の順に選択します。**[領域ロール]** を選択します。  
![\[alt_text\]](http://docs.aws.amazon.com/ja_jp/m2/latest/userguide/images/ba-runtime-auth-keycloak_7.jpg)

1. 次の画像に示す構成で領域ロールを変更します。  
![\[alt_text\]](http://docs.aws.amazon.com/ja_jp/m2/latest/userguide/images/ba-runtime-auth-keycloak_8.jpg)

1. **[トークンクレーム名]** に定義した値を覚えておいてください。この値は、Gapwalk の `gapwalk-application.security.claimGroupName` プロパティを設定する際に必要になります。  
![\[alt_text\]](http://docs.aws.amazon.com/ja_jp/m2/latest/userguide/images/ba-runtime-auth-keycloak_9.jpg)

1. **[領域ロール]** を選択し、**SUPER\$1ADMIN**、**ADMIN**、**USER** の 3 つのロールを作成します。これらのロールは、後に Gapwalk アプリケーションによって `ROLE_SUPER_ADMIN`、`ROLE_ADMIN`、および `ROLE_USER` にマッピングされます。これで、アクセスが制限された API REST の呼び出しが可能になります。  
![\[alt_text\]](http://docs.aws.amazon.com/ja_jp/m2/latest/userguide/images/ba-runtime-auth-keycloak_10.jpg)

## Keycloak を Gapwalk アプリケーションに統合する
<a name="gapwalk-setup"></a>

`application-main.yml` を次のように変更します:

```
gapwalk-application.security: enabled
gapwalk-application.security.identity: oauth
gapwalk-application.security.issuerUri: http://<KEYCLOAK_SERVER_HOSTNAME>/realms/<YOUR_REALM_NAME>
gapwalk-application.security.claimGroupName: "keycloak:groups"

gapwalk-application.security.userAttributeName: "preferred_username"
# Use "username" for cognito, 
#     "preferred_username" for keycloak
#      or any other string

spring:
  security:
    oauth2:
      client:
        registration:
          demo:
            client-id: <YOUR_CLIENT_ID>
            client-name: Demo App
            client-secret: <YOUR_CLIENT_SECRET>
            provider: keycloak
            authorization-grant-type: authorization_code
            scope: openid
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
        provider:
          keycloak:
            issuer-uri: ${gapwalk-application.security.issuerUri}
            authorization-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/auth
            jwk-set-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/certs
            token-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/token
            user-name-attribute: ${gapwalk-application.security.userAttributeName}
      resourceserver:
        jwt:
          jwk-set-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/certs
```

*<KEYCLOAK\$1SERVER\$1HOSTNAME>*、*<YOUR\$1REALM\$1NAME>*、*<YOUR\$1CLIENT\$1ID>*、および *<YOUR\$1CLIENT\$1SECRET>* を、Keycloak サーバーのホスト名、領域名、クライアント ID、およびクライアントシークレットに置き換えてください。