全新-您现在可以使用 T AWS ransform 加快迁移和现代化进程。阅读AWS 转换用户指南中的入门。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Keycloak 配置 Gap OAuth2 walk 身份验证
本主题介绍如何使用 Keycloak 作为 OAuth2 身份提供者 (IdP) 为 Gapwalk 应用程序配置身份验证。在本教程中,我们使用 Keycloak 24.0.0。
先决条件
-
Gapwalk 应用程序
Keycloak 设置
-
在 Web 浏览器中前往 Keycloak 控制面板。默认凭证为 admin/admin。转到左上角导航栏,创建名称为
demo的领域,如下图所示。
-
创建名为
app-demo的客户端。
将
localhost:8080替换为您的 Gapwalk 应用程序的地址
-
要获取您的客户端密钥,请依次选择客户端、app-demo 和凭证。
-
依次选择客户端、客户端作用域和添加预定义映射器。选择领域角色。
-
使用如下图所示的配置编辑您的领域角色。
-
记住已定义的令牌申领名称。您需要在
gapwalk-application.security.claimGroupName属性的 Gapwalk 设置定义中使用此值。
-
选择领域角色,然后创建 3 个角色:
SUPER_ADMIN、ADMIN和USER。Gapwalk 应用程序稍后会将这些角色映射到ROLE_SUPER_ADMIN、ROLE_ADMIN和ROLE_USER,以便能够访问一些受限制的 API REST 调用。
将 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 和客户端密钥。