【发布时间】:2020-08-22 01:53:57
【问题描述】:
我想知道是否以及如何设置和更新 Keycloak (OpenID-Connect) AccessToken 或 IdToken 属性(所谓的声明)由客户端 Web 应用程序,在成功验证后。
该用例是在用户基于 a Vue.js 前端和一个 SpringBoot 后端,主要将 REST 服务暴露给前端。 第二个 Web 应用程序也使用 Keycloak 令牌进行用户身份验证/授权(单点登录功能)应该能够读取第一个 Web 应用程序添加到令牌的用户属性。
即使我担心OpenId-Connect的架构设计不允许添加和更改令牌有效负载,但我仍然希望无论如何都可以。
令牌属性在 OpenId-Connect 中实现为“声明”。 Keycloak 在身份验证过程中支持“Claim”映射(由 Keycloak 服务器上的静态映射以及 Keycloak 服务器上运行的代码设置)。
以下文章提到了设置和获取Claim键值对的适当方法:
How to create a Script Mapper in Keycloak?:
token.getOtherClaims().put("myClaimName", "claim value");
Include user locale to the Keycloak ID token:
Map<String, Object> otherClaims = token.getOtherClaims();
if (otherClaims.containsKey("myClaimName")) {
String claimValue = String.valueOf(otherClaims.get("myClaimName"));
}
对于架构设计不允许 Keycloak 客户端更改令牌有效负载的情况,我感谢任何关于最佳实践的建议,以将动态添加的用户属性从一个 web 应用程序移交给另一个 web 应用程序,具有相同的 Keycloak 访问和/或 Id-Token 通用。
【问题讨论】:
标签: spring-boot vue.js spring-security keycloak