如何给 Keycloak 用户加上“部门”、“电话”等自定义属性

Keycloak 是一款开源的用户认证和授权软件。在默认安装情况下,它只给新创建的用户提供了 email 属性,但是在许多应用场景中,客户都会要求给新创建的用户增加诸如“部门”、“电话”等自定义属性。

本文会介绍如何给 keycloak 中新创建的用户添加自定义属性,以及如何在前端中访问到这些属性。

给新用户添加自定义属性

首先通过类似下面的网址访问 keycloak

  • https://your_keycloak_ip/auth

如下图所示,点击 users 菜单

在这里插入图片描述
系统会呈现用户列表。选择某个用户,点击 edit
在这里插入图片描述
下图中是点击了 admin 用户的 edit 后,系统呈现的画面。然后选择 attributes,增加自定义属性。
在这里插入图片描述
如下图所示,添加了自定义属性后,选择 add,然后点击 save 完成自定义属性的添加。
在这里插入图片描述

在 client 里做 mapper

给用户添加了自定义属性以后,默认情况下这些属性不会包含在用户的 access token 里。我们需要给 keycloak 的 client 增加自定义属性和 token 中的 claim 之间的映射,让 keycloak 的 token 中包含我们定义好的自定义属性。

如下图所示,选择指定的 client 然后点击 edit 进行编辑。在本例中,我们的 client 的名称是 emsclient。
在这里插入图片描述
系统会呈现 emsclient 的详情。点击 mapper。
在这里插入图片描述
系统展示映射列表,点击 create 添加映射。
在这里插入图片描述
如下图所示,在选择映射类型 (mapper type) 时选择 user attribute来添加我们定义好了的用户属性。
在这里插入图片描述
按照下图推荐的流程把我们的自定义属性映射到 JWT token 里。
在这里插入图片描述
添加成功后,我们就可以检验。JWT token 里是否有我们需要的字段了。

下面是一个keycloak返回的 JWT token 的示例。可以看到最后的部分包含了我们自定义的“姓名”、“角色”、“电话”等属性 (attributes)。现在前端就可以通过 JWT 显示我们想要的用户信息了。

{
    "exp": 1692109592,
    "iat": 1692091592,
    "auth_time": 1692091570,
    "jti": "98c603b8-638f-49bd-9756-4a087c31fdc6",
    "iss": "https://your_keycloak_ip:port/auth/realms/ems",
    "sub": "4a1d2352-5d42-45e1-843b-5ab31545aa94",
    "typ": "Bearer",
    "azp": "emsclient",
    "nonce": "2bb75e79-cd90-4fc0-8235-1425e69b6fa4",
    "session_state": "9397e3b2-f700-4eb1-8465-5c6dade0acd0",
    "acr": "0",
    
    "realm_access": {
      "roles": [
        "default-roles-ems",
        "offline_access",
        "admin",
        "energyManager",
        "uma_authorization"
      ]
    },
      "emsclient": {
        "roles": [
          "ems-admin",
          "ems-energy-manager",
          "ems-dashboard"
        ]
      },
      "broker": {
        "roles": [
          "read-token"
        ]
      },
      "account": {
        "roles": [
          "manage-account",
          "view-applications",
          "view-consent",
          "manage-account-links",
          "delete-account",
          "manage-consent",
          "view-profile"
        ]
      }
    },
    "scope": "openid profile email",
    "姓名": "能效管理员",
    "角色": "管理员角色",
    "email_verified": false,
    "电话": "13800138000",
    "preferred_username": "admin",
    "locale": "zh-CN"
  }

结论

本文详细介绍了如何通过 keycloak 的 user attribute 特性给 JWT token 增加自定义属性的功能。通过这个功能,我们就可以给 keycloak 用户添加我们想要的属性了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/75951.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

应用 - 行为分析篇

前言 以商超项目为例,为了更好的给用户提供服务,我们需要了解到用户喜欢什么,我的产品中哪些是用户感兴趣的,哪些是不感兴趣的。我应该在推荐栏目中给用户推荐的内容是哪些。 基于这些业务场景,我们需要一套行为分析…

认识Transformer:入门知识

视频链接: https://www.youtube.com/watch?vugWDIIOHtPA&listPLJV_el3uVTsOK_ZK5L0Iv_EQoL1JefRL4&index60 文章目录 Self-Attention layerMulti-head self-attentionPositional encodingSeq2Seq with AttentionTransformerUniversal Transformer Seq2Seq …

领航优配:券商板块热度不减,华林证券涨停,中银证券等走高

券商板块15日午后再度走强,截至发稿,华林证券涨停,中银证券涨超7%,兴业证券涨超3%,东方财富、华泰证券、太平洋等涨逾2%。 组织表示,当前券商PB估值为1.36倍,位于2020年以来的34%分位点附近&…

分类预测 | MATLAB实现EVO-CNN多输入分类预测

分类预测 | MATLAB实现EVO-CNN多输入分类预测 目录 分类预测 | MATLAB实现EVO-CNN多输入分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现EVO-CNN多输入分类预测 2.代码说明:量谷优化卷积神经网络的数据分类预测:要求于Matlab …

运维监控学习笔记9

2、画出拓扑图的小案例: 3、在连接的线上显示网络流量,使用了一个简单的公式: {nginx-server:net.if.out[ens33].last(0)} 4、在screens中显示nginx的状态页面: 5、zabbix报警: 发送邮件的选项。Email可以使用&#xf…

大语言模型之二 GPT发展史简介

得益于数据、模型结构以及并行算力的发展,大语言模型应用现今呈井喷式发展态势,大语言神经网络模型成为了不可忽视的一项技术。 GPT在自然语言处理NLP任务上取得了突破性的进展,扩散模型已经拥有了成为下一代图像生成模型的代表的潜力&#x…

C语言快速回顾(一)

前言 在Android音视频开发中,网上知识点过于零碎,自学起来难度非常大,不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》,结合我自己的工作学习经历,我准备写一个音视频系列blog。C/C是音视频必…

【C语言】memset()函数

一.memset()函数简介 我们先来看一下cplusplus.com - The C Resources Network网站上memset()函数的基本信息: 1.函数功能 memset()函数的功能是:将一块内存空间的每个字节都设置为指定的值。 这个函数通常用于初始化一个内存空间,或者清空一个内存空间…

【Linux】多线程1——线程概念与线程控制

文章目录 1. 线程概念什么是线程Linux中的线程线程的优点线程的缺点线程的独立资源和共享资源 2. 线程控制Linux的pthread库用户级线程 📝 个人主页 :超人不会飞)📑 本文收录专栏:《Linux》💭 如果本文对您有帮助&…

WSL2 Ubuntu子系统安装OpenCV

文章目录 前言一、基本概念二、操作步骤1.下载源码2.安装依赖3.运行编译4.配置路径 前言 OpenCV用C语言编写,它的主要接口也是C语言,但是依然保留了大量的C语言接口。该库也有大量的Python, Java and MATLAB/OCTAVE (版本2.5)的接口。这些语…

Docker容器与虚拟化技术:Docker容器操作、网络模式

目录 一、理论 1.Docker 容器操作 2.Docker 网络 二、实验 1.Docker 容器操作 2.Docker 网络 2.Docker 的网络模式 三、问题 1. 批量删除所有容器未生效 2.使用bridge模式指定IP运行docker报错 3.未显示bridge网络模式名称 四、总结 一、理论 1.Docker 容器操作 &a…

【动画】p60动画蓝图、播放蒙太奇、打包

p60动画蓝图、播放蒙太奇、打包 p60动画蓝图、播放蒙太奇、打包添加动画动画蓝图使模型使用动画蓝图奔跑跳舞蒙太奇 移动打断蒙太奇打包退出游戏 p60动画蓝图、播放蒙太奇、打包 添加动画 右键内容浏览器-》动画-》混合空间1D-》选择新的角色的骨骼 如下图在资产详情修改参数…

克服多语言语音技术的障碍:五大挑战和创新解决方案

推荐:使用 NSDT场景编辑器 助你快速搭建可二次编辑器的3D应用场景 介绍 在用西班牙语(您的首选语言)向语音助手询问某些内容后,您有多少次不得不暂停,然后用语音助手理解的语言(可能是英语)重述…

离线安装Nginx(rpm方式)

环境:centos7.9 下面将展示通过rpm方式安装Nginx 1.官方下载Nginx rpm包 下载地址 http://nginx.org/packages/ 下载版本根据操作系统版本进行选择,本次操作系统是centos7.9 - 64位系统,所以对应的下载路径是: http://nginx.or…

AI Chat 设计模式:15. 桥接模式

本文是该系列的第十五篇,采用问答式的方式展开,问题由我提出,答案由 Chat AI 作出,灰色背景的文字则主要是我的一些思考和补充。 问题列表 Q.1 如果你是第一次接触桥接模式,那么你会有哪些疑问呢?A.1Q.2 什…

Hlang社区项目说明

文章目录 前言Hlang社区技术前端后端 前言 Hello,欢迎来到本专栏,那么这也是第一次做这种类型的专栏,如有不做多多指教。那么在这里我要隆重介绍的就是这个Hlang这个项目。 首先,这里我要说明的是,我们的这个项目其实是分为两个…

list

目录 迭代器 介绍 种类 本质 介绍 模拟实现 注意点 代码 迭代器 介绍 在C中,迭代器(Iterators)是一种用于遍历容器(如数组、vector、list等)中元素的工具 无论容器的具体实现细节如何,访问容器中的元素的方…

包管理工具 nvm npm nrm yarn cnpm npx pnpm详解

包管理工具 nvm npm yarn cnpm npx pnpm npm、cnpm、yarn、pnpm、npx、nvm的区别:https://blog.csdn.net/weixin_53791978/article/details/122533843 npm、cnpm、yarn、pnpm、npx、nvm的区别:https://blog.csdn.net/weixin_53791978/article/details/1…

实验三 图像分割与描述

一、实验目的: (1)进一步掌握图像处理工具Matlab,熟悉基于Matlab的图像处理函数。 (2)掌握图像分割方法,熟悉常用图像描述方法。 二、实验原理 1.肤色检测 肤色是人类皮肤重要特征之一&#xff…

【wiki】电竞助手掉落提醒 EsportsHelper「Webhook」「钉钉」「饭碗警告」「企业微信」「Discord」

介绍 本项目链接 Github电竞助手链接 github上项目电竞助手(EsportsHelper)的掉落提醒配置教程,当有掉宝的时候会发送你信息提示. 至于这个脚本是怎么使用的简单说一下,就是通过自动观看英雄联盟直播 从而获取奖励(仅限直营服),有兴趣的可以去github上看readme,非常详细,支持…