当前位置: 首页 > 知识库问答 >
问题:

KeyClope检索KeyClope主体的自定义属性

邢华清
2023-03-14

在我的Rest服务中,我可以通过使用身份验证后获得主体信息

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

陈述

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

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

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

有什么办法?

共有2个答案

邰昀
2023-03-14

选择客户端

获取自定义属性

使现代化

>

  • 在组级别添加“phone”属性,将用户分配到该组,然后从组级别为所有用户获取“phone”属性

    返回映射器并使用“聚合属性值=true”和“多值=true”更新“phone”,您将获得“phone”作为列表,其中包含组和用户级别的属性。如果您保留“聚合属性值=false”或“多值=false”,您只会得到一个值,其中来自用户的“phone”属性将覆盖来自组的“phone”属性(这是有意义的)

  • 陆伟
    2023-03-14

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

    1. 向管理控制台添加属性
    2. 添加索赔映射
    3. 访问权声明

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

    添加索赔映射:

    1. 打开你所在领域的管理控制台
    2. 去客户那里打开你的客户
    3. 这只适用于设置

    访问声明:

    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(...);
    }
    

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

     类似资料:
    • 我使用Reactjs作为前端。我想从javascript端检索自定义属性。就像这个答案所说的。 https://stackoverflow.com/a/32890003/2940265 但我找不到如何在javascript端实现它。 我在Chrome中进行了调试,但找不到适合自定义属性的结果。 请帮帮忙

    • 是否可以通过KeyClope REST API更新自定义属性的值?例如,要使用哪个endpoint,以及如何为此处创建的属性构造请求主体。 谢谢

    • 我们正在使用Vert实现RESTful服务和整个后端应用程序。x、 这些API由一款混合移动应用程序(使用Ionic/angularjs开发)使用。我们正在使用KeyClope进行用户管理,并在应用程序上进行身份验证和授权。 我的问题是,我如何使用keydove来保护(对同一组用户进行身份验证和授权)我的RESTful服务访问,这是使用Vert实现的。x、 任何示例实现都将非常有用。

    • 在注册时,KeyClope提供了通过KeyClope主题的注册页面模板,通过“输入”元素添加自定义用户属性的能力,这些元素看起来像: 但是,这似乎只有在用户创建帐户并提交表单时才有效。 如果用户通过社交身份提供商(谷歌、微软、github等)登录我们如何添加自定义用户属性?

    • 我想从react js客户端和后端节点js使用KeyClope社交登录。我找不到任何方法从KeyClope生成红色标记的链接。 http://localhost:8080/auth/realms/softspace/broker/github/login?client_id=account 我不知道他们是如何生成标签id和会话代码的。

    • 请让我知道,如果这是不是正确的地方发布,但我一直在寻找有关这方面的信息,似乎找不到一个简洁的答案。 我一直在尝试使用KeyClope来满足我们应用程序的用户管理需求。虽然我发现KeyClope非常有能力,也非常有效,但我已经进入了我们使用的死胡同。 背景: 传统上,我们的应用程序使用一个非常基本的登录框架来验证身份验证。然后使用我们无法更改的第三方应用程序,确定用户将通过wsdl操作拥有的角色,并