从JavaScript检索自定义属性(使用Javascript适配器)密钥罩

Retrieve Custom Attribute from JavaScript (using Javascript Adapter) Keycloak(从JavaScript检索自定义属性(使用Javascript适配器)密钥罩)
本文介绍了从JavaScript检索自定义属性(使用Javascript适配器)密钥罩的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个密钥遮盖用户,具有如下所示的自定义属性。

我使用Reactjs作为前端。我想从javascript端检索自定义属性。就像这个答案所说的那样。

https://stackoverflow.com/a/32890003/2940265

但我找不到如何在javascript端执行此操作。

我在Chrome中调试,但找不到适合自定义属性的结果。

请帮助

推荐答案

我找到答案了。

我在这里发帖,因为有人可能会觉得有用。

您可以向用户添加自定义属性,但是需要额外的配置才能从javascript端检索它。对于初学者来说,我将编写从添加Customer到从javascript检索属性的答案(在我的示例中是reaction js)。

让我们向用户添加自定义属性。

登录到keyloak并选择您的领域(如果您有多个领域,除非您将自动登录到领域)

之后选择用户->查看所有用户 选择您的用户,在我的案例中是Alice 选择属性并添加自定义属性(在我的示例中,我添加了自定义属性调用companyId,如下所示)

现在单击保存

现在,我们必须使用密钥罩客户端映射自定义属性。 若要在前端使用密钥罩,您必须在客户端(左边栏)中有客户端 如果没有,则必须为此配置一个客户端。在我的案例中,我的客户端是test-app

为此选择客户端->test-app->映射器 现在我们必须创建映射器。单击创建

对于令牌声明名称,您应该提供您的自定义属性密钥(在我的示例中是companyId)为方便起见,我将companyId用于名称、领域角色前缀、令牌声明名称。您应该在映射器类型声明JSON类型字符串中选择用户属性

之后,单击保存。现在您可以从javascript获取自定义属性。

假设您的keyloak JavaScript对象是keycloak,您可以使用keycloak获取companyId。

let companyId = keyCloak.idTokenParsed.companyId;

示例代码如下所示(我在react.js中的代码)

keyCloak.init({
    onLoad: 'login-required'
}).success(authenticated => {
    if (authenticated) {
        if (hasIn(keyCloak.tokenParsed, 'realm_access')) {
            if (keyCloak.tokenParsed.realm_access.roles === []) {
                console.log("Error: No roles found in token")
            } else {
                let companyId = keyCloak.idTokenParsed.companyId;
            }
        } else {
            console.log("Error: Cannot parse token");
        }
    } else {
        console.log("Error: Authentication failed");
    }
}).error(e => {
    console.log("Error: " + e);
    console.log(keyCloak);
});

希望有人觉得这个答案有用,因为我可以找到JavaScript的答案。快乐编码:))

这篇关于从JavaScript检索自定义属性(使用Javascript适配器)密钥罩的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)