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

新 - 您現在可以使用 AWS 轉換加速遷移和現代化。閱讀 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. 選擇領域角色,並建立 3 個角色:ADMINSUPER_ADMINUSER。這些角色稍後會映射至 ROLE_SUPER_ADMIN、 和 ROLE_ADMINROLE_USER並由 Gapwalk 應用程式存取一些受限的 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 gapwalk-application.security.localhostWhitelistingEnabled: false 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 和您的用戶端秘密。