gpt4 book ai didi

authentication - Keycloak 将自定义属性检索到 KeycloakPrincipal

转载 作者:行者123 更新时间:2023-12-03 08:32:15 24 4
gpt4 key购买 nike

在我的休息服务中,我可以使用身份验证后获取主体信息

KeycloakPrincipal kcPrincipal = (KeycloakPrincipal) servletRequest.getUserPrincipal();

陈述。

Keycloak 主体不包含我需要的有关经过身份验证的用户的所有信息。
是否可以自定义我自己的主体类型?
在 key 斗篷服务器端,我开发了一个用户联合提供程序。我看到 UserModel 可以为我的用户添加一组自定义属性。

是否可以在该代码中插入我的自定义主体?

是否可以从 keycloak 主体中检索此属性?

方法是什么?

最佳答案

要添加自定义属性,您需要做三件事:

  • 向管理控制台添加属性
  • 添加声明映射
  • 访问声明

  • 第一个在这里解释得很好: https://www.keycloak.org/docs/latest/server_admin/index.html#user-attributes

    添加声明映射:
  • 打开您领域的管理控制台。
  • 转到客户端并打开您的客户端
  • 这仅适用于设置 > 访问类型 secret 或公开(非承载)
  • 转至映射器
  • 创建从属性到 json 的映射
  • 选中“添加到 ID token ”

  • 访问声明:
    final Principal userPrincipal = httpRequest.getUserPrincipal();

    if (userPrincipal instanceof KeycloakPrincipal) {

    KeycloakPrincipal<KeycloakSecurityContext> kp = (KeycloakPrincipal<KeycloakSecurityContext>) userPrincipal;
    IDToken token = kp.getKeycloakSecurityContext().getIdToken();

    Map<String, Object> otherClaims = token.getOtherClaims();

    if (otherClaims.containsKey("YOUR_CLAIM_KEY")) {
    yourClaim = String.valueOf(otherClaims.get("YOUR_CLAIM_KEY"));
    }
    } else {
    throw new RuntimeException(...);
    }

    希望这有助于并适合您的用例。我将此用于添加自定义主题的自定义属性。

    关于authentication - Keycloak 将自定义属性检索到 KeycloakPrincipal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32678883/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com