keycloak-操作keycloak数据库添加用户及密码

2024-03-05 07:36

本文主要是介绍keycloak-操作keycloak数据库添加用户及密码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、环境描述

keycloak连接本地数据库的方法:
keycloak-连接本地数据库-CSDN博客

连接数据库后,
用户数据表:user_entity

密码数据表:credential

keycloak版本:23.0.7

二、开始干活

1、插入数据到用户表(user_entity)中

几个字段是必须有的:

id:主键
enbale: 设为 true。代表用户启用
realm_id: 域id,查找后代码中写成静态或可配置,一个域基本够一个微服务群用了。
username:必填

2、为用户设置密码(credential)

几个字段是必须有的:

id:主键
type:password 认证方式
user_id: 你这个密码是给哪个用户设置的
secret_data:密码数据
credential_data::密码加密方式

3、keycloak密码加密

keycloak默认密码采用pbkdf2-sha256加密,salt 采用随机byte。加密demo代码如下

package com.franklin.springbootdemo.test;import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.KeySpec;
import java.util.Base64;public class PBKDF2ExampleTwo {// 生成随机盐的方法private static byte[] generateSalt() throws NoSuchAlgorithmException {SecureRandom sr = SecureRandom.getInstanceStrong();byte[] salt = new byte[16]; // 128位盐sr.nextBytes(salt);return salt;}// 使用PBKDF2WithHmacSHA256加密密码public static String hashPassword(String password) throws NoSuchAlgorithmException, InvalidKeySpecException {int iterations = 27500;byte[] salt = generateSalt();KeySpec spec = new PBEKeySpec(password.toCharArray(), salt, iterations, 256);SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");byte[] hash = skf.generateSecret(spec).getEncoded();// 将盐和哈希值编码为Base64字符串,以便存储或传输String saltBase64 = Base64.getEncoder().encodeToString(salt);String hashBase64 = Base64.getEncoder().encodeToString(hash);return saltBase64 + ":" + hashBase64;}public static void main(String[] args) {try {String originalPassword = "hhh";String hashedPassword = hashPassword(originalPassword);System.out.println("Salted Hash: " + hashedPassword);} catch (NoSuchAlgorithmException | InvalidKeySpecException e) {e.printStackTrace();}}
}

4、写入数据库密码后,刷新生效

因为数据库写入密码后,不能立即生效,需要刷新缓存

参考博客 : keycloak-通过keycloak服务API操作用户-CSDN博客

5、密码校验

密码无法解密,只能记录solt值后,再次将要验证的明文密码使用相同solt值加密,然后对比密文

这篇关于keycloak-操作keycloak数据库添加用户及密码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/775748

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

Python使用openpyxl读取Excel的操作详解

《Python使用openpyxl读取Excel的操作详解》本文介绍了使用Python的openpyxl库进行Excel文件的创建、读写、数据操作、工作簿与工作表管理,包括创建工作簿、加载工作簿、操作... 目录1 概述1.1 图示1.2 安装第三方库2 工作簿 workbook2.1 创建:Workboo

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配