Keycloak 创建和修改自定义用户信息
前言
公司在用 Keycloak 作为认证服务器,之前在系统数据库里存的,后来想了想是不是可以在 Keycloak 中存。在网上找的方法大多都是通过 admin 接口去改,但这种方法就需要两种解决方案,一种就是需要一个能登 admin 账号的服务去改,另一个就是直接改数据库。这里经过本人研究提供一种新方法。
准备工作
赋予客户端用户在 account 接口修改和读取用户信息的角色

接入接口
- 在前端编写代码通过 GET 方法访问
https://<你的 KeyCloak 域名>/auth/realms/<你的 Realm>/account/,且Content-Type必须为application/json,下面是参考代码
let token = "<你的 token>"
let myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer " + token);
let requestOptions = {
method: 'GET',
headers: myHeaders
};
let userInfo = await fetch("https://<你的 KeyCloak 域名>/auth/realms/<你的 Realm>/account/", requestOptions)
.then(response => response.json())
.catch(error => console.log('error', error));
- 编辑信息,用户信息的 JSON 结尾处有
attributes属性,attributes是存储自定义信息的地方。赋值格式是"attributes": { "phone": ["133"], 'birthday': ["2023"] },属性值是数组里面包一个字符串。数据格式参考如下
原始信息
{
"id": "xxxx",
"username": "xxxx",
"firstName": "xxx",
"lastName": "xxx",
"email": "xxxx@xxxx.com",
"emailVerified": false,
"userProfileMetadata": {
"attributes": [
{
"name": "username",
"displayName": "${username}",
"required": true,
"readOnly": true,
"validators": {}
},
{
"name": "email",
"displayName": "${email}",
"required": true,
"readOnly": false,
"validators": {
"email": {
"ignore.empty.value": true
}
}
},
{
"name": "firstName",
"displayName": "${firstName}",
"required": true,
"readOnly": false,
"validators": {}
},
{
"name": "lastName",
"displayName": "${lastName}",
"required": true,
"readOnly": false,
"validators": {}
}
]
},
"attributes": {
"birthday": [
"2023/05/09"
],
"avatar": [
"http://test.com/test.jpg"
],
"locale": [
"zh-CN"
]
}
}
增加手机号(phone 属性,值为 13333)
{
"id": "xxxx",
"username": "xxxx",
"firstName": "xxx",
"lastName": "xxx",
"email": "xxxx@xxxx.com",
"emailVerified": false,
"userProfileMetadata": {
"attributes": [
{
"name": "username",
"displayName": "${username}",
"required": true,
"readOnly": true,
"validators": {}
},
{
"name": "email",
"displayName": "${email}",
"required": true,
"readOnly": false,
"validators": {
"email": {
"ignore.empty.value": true
}
}
},
{
"name": "firstName",
"displayName": "${firstName}",
"required": true,
"readOnly": false,
"validators": {}
},
{
"name": "lastName",
"displayName": "${lastName}",
"required": true,
"readOnly": false,
"validators": {}
}
]
},
"attributes": {
"birthday": [
"2023/05/09"
],
"avatar": [
"http://test.com/test.jpg"
],
"locale": [
"zh-CN"
],
"phone": [
"13333"
]
}
}
- 提交信息,将修改后的 JSON 通过 POST 方法再发回
https://<你的 KeyCloak 域名>/auth/realms/<你的 Realm>/account/,返回 Body 中无内容,判断成功失败看接口是否返回 200,参考代码
requestOptions = {
method: 'POST',
headers: myHeaders,
body: userInfo
};
let result = await fetch("https://<你的 KeyCloak 域名>/auth/realms/<你的 Realm>/account/", requestOptions)
.catch(error => console.log('error', error));
Keycloak 创建和修改自定义用户信息的更多相关文章
- .NET 实现自定义ContextUser的Identity和Principal实现自定义用户信息,权限验证。
备用收藏,http://blog.csdn.net/msdnxgh/article/details/6894885 .NET 实现自定义ContextUser的Identity和Principal 在 ...
- cordova完整版本创建、修改自定义插件重新调试步骤带截图
创建第三方插件 npx plugman create --name myplugin --plugin_id xiao.jin.plugin --plugin_version 1.0.0 添加平台支持 ...
- Django 中自定义用户模型及集成认证授权功能总结
1. 概述 Django 中的 django.contrib.auth 应用提供了完整的用户及认证授权功能. Django 官方推荐基于内置 User 数据模型创建新的自定义用户模型,方便添加 bir ...
- Linux学习总结(十二)—— CentOS用户管理:创建用户、修改用户、修改密码、密码有效期、禁用账户、解锁账户、删除用户、查看所有用户信息
文章首发于Linux学习总结(十二)-- CentOS用户管理,请尊重原创保留原文链接. 创建用户 useradd -g webadmin -d /home/zhangsan zhangsan pas ...
- Keycloak 13 自定义用户身份认证流程(User Storage SPI)
Keycloak 版本:13.0.0 介绍 Keycloak 是为现代应用程序和服务提供的一个开源的身份和访问管理的解决方案. Keycloak 在测试环境可以使用内嵌数据库,生产环境需要重新配置数据 ...
- Linux 创建修改删除用户和组
200 ? "200px" : this.width)!important;} --> 介绍 在日常的维护过程中创建用户操作用的相对会多一些,但是在这个过程中涉及到的知识点就 ...
- Linux创建修改删除用户和组
Linux 创建修改删除用户和组 介绍 在日常的维护过程中创建用户操作用的相对会多一些,但是在这个过程中涉及到的知识点就不单单就是useradd了,接下来就来详细了解账号管理的相关信息. 用户信息 先 ...
- 添加用户useradd,给用户设置修改密码passwd,修改用户信息usermod,修改用户密码状态chage,删除用户userdel,查询用户及组id,切换用户su,查看当前环境变量env
useradd 用户名 passwd 用户名,给指定用户设密码 passwd给当前用户设密码 添加一个用户系统会自动在以下文件或目录创建对应用户信息: [root@localhost ~]# grep ...
- linux命令创建和修改用户及密码
linux下创建用户 1.添加ftp用户 useradd ftpname -d /home/ftp passwd ftppwd 以下操作都以root权限进行: service vsftpd start ...
- mysql 用户创建,修改和忘记root密码的操作
#创建用户CREATE USER 'zzq'@'localhost' IDENTIFIED by 'zzq';#flush privileges 命令本质上的作用是将当前user和privilige表 ...
随机推荐
- Lakehouse: A New Generation of Open Platforms that Unify Data Warehousing and Advanced Analytics
在Delta Lake官网上提到的一篇新一代湖仓架构的论文. 这篇论文由Databricks团队2021年发表于CIDR会议. 这个会议是对sigmod和vldb会议的补充. 可以看到这篇论文和前一篇 ...
- 引入代码来源:深入分析markdown-it-quote插件的魔法
引入代码来源:深入分析markdown-it-quote插件的魔法 markdown-it-quote是一个用于markdown-it的插件,支持多种代码围栏功能. 这是 SourceCodeTrac ...
- 代码随想录算法训练营第四天| LeetCode 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 142.环形链表II
24. 两两交换链表中的节点 卡哥建议:用虚拟头结点,这样会方便很多. 本题链表操作就比较复杂了,建议大家先看视频,视频里我讲解了注意事项,为什么需要temp保存临时节点. 题目链接/ ...
- uni-app学习之路
MVC模式1. model:模型层,数据的增删改查2. view:视图层,前端页面3. controller:控制层,处理业务 文件页面结构1. 页面以`.vue`结尾2. `template`,`s ...
- VScode 中golang 单元测试,解决单元测试超时timeout30s
目的:单元测试的主要目的是验证代码的每个单元(函数.方法)是否按照预期工作. 提示:解决单元测试超时30s的问题在序号4 1 准备以_test.go结尾文件和导入testing包 在命名文件时需要让文 ...
- Parallel 与 ConcurrentBag<T> 这对儿黄金搭档(C#)【并发编程系列】
〇.前言 日常开发中经常会遇到数据统计,特别是关于报表的项目.数据处理的效率和准确度当然是首要关注点. 本文主要介绍,如何通过 Parallel 来并行处理数据,并组合 ConcurrentBag&l ...
- quarkus依赖注入之八:装饰器(Decorator)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是<quarkus依赖注入> ...
- go接收alertmanager告警并发送钉钉
前言 功能:作为 alertmanager 的 webhook receiver,提取需要的数据转发到钉钉群机器人的webhook web框架:gin alertmanager版本:0.24 系统版本 ...
- 关于3D-AIGC的调研与探讨
0.前言 本文是自己最近在项目上的需要做的一些调研和自己的一些看法,以分享为主. 2D AIGC(文生文.文生图.图生图)在今天大放异彩,产生了许多惊艳的效果,如ChatGPT系列.Imagen.DA ...
- 不重启Docker能添加自签SSL证书镜像仓库吗?
应用背景 在企业应用Docker规划初期配置非安全镜像仓库时,有时会遗漏一些仓库没配置,但此时应用程序已经在Docker平台上部署起来了,体量越大就越不会让人去直接重启Docker. 那么,不重启Do ...