使用 Keycloak 設定 Gapwalk OAuth2 身分驗證 - AWS 大型主機現代化

AWS Mainframe Modernization Service (受管執行期環境體驗) 不再向新客戶開放。對於與 AWS Mainframe Modernization Service (受管執行期環境體驗) 類似的功能,探索 AWS Mainframe Modernization Service (自我管理體驗)。現有客戶可以繼續正常使用該服務。如需詳細資訊,請參閱AWS 大型主機現代化可用性變更

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Keycloak 設定 Gapwalk OAuth2 身分驗證

本主題說明如何使用 Keycloak 做為身分提供者 (IdP),為 Gapwalk 應用程式設定 OAuth2 身分驗證。在本教學課程中,我們使用 Keycloak 24.0.0。

先決條件

Keycloak 設定

  1. 前往 Web 瀏覽器中的 Keycloak 儀表板。預設登入資料為 admin/admin。前往左上角導覽列,並建立名稱為 的領域demo,如下圖所示。

    alt_text
  2. 建立名稱為 的用戶端app-demo

    User interface for creating a new client in an authentication management system.

    localhost:8080 將 取代為 Gapwalk 應用程式的地址

    alt_text
    alt_text
  3. 若要取得您的用戶端秘密,請選擇用戶端,然後選擇應用程式示範,然後選擇登入資料。

    alt_text
  4. 選擇用戶端,然後選擇用戶端範圍,然後新增預先定義的映射器。選擇領域角色

    alt_text
  5. 使用下圖所示的組態編輯您的領域角色。

    alt_text
  6. 記住定義的權杖宣告名稱。在 gapwalk-application.security.claimGroupName 屬性的 Gapwalk 設定定義中,您將需要此值。

    alt_text
  7. 選擇 Realms 角色,並建立 3 個角色:SUPER_ADMINADMINUSER。這些角色稍後會映射到 ROLE_SUPER_ADMINROLE_ADMIN和 Gapwalk 應用程式,以便能夠存取一些受限ROLE_USER的 API REST 呼叫。

    alt_text

將 Keycloak 整合到 Gapwalk 應用程式

編輯您的 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_SERVER_HOSTNAME><YOUR_REALM_NAME><YOUR_CLIENT_ID><YOUR_CLIENT_SECRET> 取代為您的 Keycloak 伺服器主機名稱、您的領域名稱、您的用戶端 ID 和您的用戶端秘密。