Keycloak的使用
简介
Keycloak以最小的麻烦为应用程序和安全服务添加身份验证。我们不需要再处理用户存储或者用户验证的事情,Keycloak可以开箱即用。
安装与运行
方式一:普通程序
下载
https://www.keycloak.org/downloads.html
执行
$ tar -xvzf keycloak-12.0.4.tar.gz
$ cd bin
$ ./standalone.sh
方式二:docker
KEYCLOAK_USER=admin是创建的用户名
KEYCLOAK_PASSWORD=admin是用户名对应的密码
如果需要用于项目,需要设置一个复杂的用户名和密码
$ docker run -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin quay.io/keycloak/keycloak:12.0.4
参数配置
打开浏览器,访问
http://127.0.0.1:8080/auth/
打开管理员终端,输入用户名admin,密码admin
添加一个realm
Keycloak的领域相当于一个租户。它允许创建独立的应用程序和用户组。默认情况下,Keycloak中会有一个名为master的领域,但这是用于管理Keycloak的,而不应该把master用于我们自己的应用程序。
输入领域的名字如demo,然后点击创建
添加一个用户
初始状态下,领域realm没有任何一个用户,所以我们需要先添加一个用户。
填写用户名,点击保存
设置密码
点击凭证,输入密码和密码确认,临时密码设置为off,然后点击设置密码按钮。
如果临时密码是On,那么下次登录的时候会提示修改密码。
验证用户
http://localhost:8080/auth/realms/demo/account/#/
注销用户,通过浏览器访问上面的地址,并点击登录。
输入刚才添加的用户名和密码,并点击登录。
添加应用
回到管理员界面
http://localhost:8080/auth
登录后选择前面创建的领域Demo,然后选择Clients客户端,点击右侧的创建。
填写ID为demo-client然后点击保存
获取Token
请求方式:POST
http://localhost:8080/auth/realms/demo/protocol/openid-connect/token请求Header:
Accept: application/json
Content-Type: application/x-www-form-urlencoded请求参数:
client_id: demo-client
grant_type: password
username: wilson
password: 123456
获取Realm信息
代码
package mainimport ("context""log""github.com/Nerzal/gocloak/v8"
)func main() {client := gocloak.NewClient("http://localhost:8080")ctx := context.Background()realmName := "master"//登陆,输入用户名、密码、领域,返回toekntoken, err := client.LoginAdmin(ctx, "admin", "admin", realmName)if err != nil {log.Println("LoginAdmin error: ", err.Error())return}log.Println("LoginAdmin token: ", token.AccessToken)//获取所有领域信息realms, err := client.GetRealms(ctx, token.AccessToken)if err != nil {log.Println("GetRealms error: ", err.Error())return}log.Println("GetRealms token: ", realms)
}
运行
$ go run web.go
2021/03/31 16:38:11 LoginAdmin token: eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia
获取用户信息
关键代码
users, err := client.GetUsers(ctx, token.AccessToken, realmName, gocloak.GetUsersParams{})
if err != nil {log.Println("GetUsers error: ", err.Error())return
}
log.Println("GetUsers users: ", users)
运行
$ go run web.go
2021/03/31 17:06:12 GetUsers users: [{"id": "ee6ab572-1bfb-4ab5-88cc-09b84d7d2a16","createdTimestamp": 1617179772726,"username": "admin","enabled": true,"totp": false,"emailVerified": false,"disableableCredentialTypes": [],"requiredActions": [],"access": {"impersonate": true,"manage": true,"manageGroupMembership": true,"mapRoles": true,"view": true}
}]
创建领域
关键代码
demoRealm := "demo"
enable := true//创建领域
realmid, err := client.CreateRealm(ctx, token.AccessToken, gocloak.RealmRepresentation{Realm: &demoRealm,Enabled: &enable,
})
if err != nil {log.Println("CreateRealm error: ", err.Error())return
}
log.Println("CreateRealm res: ", realmid)
运行
$ go run web.go
2021/03/31 17:09:17 CreateRealm res: demo
创建用户
关键代码
name := "Wilson"
//创建用户
str, err := client.CreateUser(ctx, token.AccessToken, demoRealm, gocloak.User{Username: &name,Enabled: &enable,
})
if err != nil {log.Println("CreateUser error: ", err.Error())return
}
log.Println("CreateUser str: ", str)
//设置密码
err = client.SetPassword(ctx, token.AccessToken, str, demoRealm, "123456", false)
if err != nil {log.Println("SetPassword error: ", err.Error())return
}
log.Println("SetPassword success")
运行
$ go run web.go
2021/03/31 17:40:57 CreateUser str: 5495f328-b3f2-4eb9-abb1-eb6bc4076ae3
2021/03/31 17:40:57 SetPassword success
Keycloak的使用相关推荐
- OAuth2 服务器Keycloak中的Realm
前几篇我和大家一起对Keycloak进行了粗略的了解.随着逐步的了解,我发现进入了一个误区,原本以为Spring Security整合Keycloak的重心在于Spring Security这一方面, ...
- 一个接口是如何在Keycloak和Spring Security之间执行的
在上一篇我们对Keycloak的常用配置进行了熟悉,今天我们来对Keycloak适配Spring Security的执行流程做一个分析,简单了解一下其定制的一些Spring Security过滤器. ...
- Keycloak Spring Security适配器的常用配置
在上一篇Keycloak系列文章中,我们把Keycloak同Spring Security成功适配,其中用了一个keycloak.json的配置.它包含了不少属性,我觉得在深入学习Keycloak的过 ...
- Spring Security 中使用Keycloak作为认证授权服务器
Keycloak对流行的Java应用提供了适配器.在系列文章的上一篇我们演示了针对Spring Boot的安全保护,用的就是适配器的一种.Keycloak同样提供Spring Security的适配器 ...
- Keycloak简单几步实现对Spring Boot应用的权限控制
我们在上一篇初步尝试了keycloak,手动建立了一个名为felord.cn的realm并在该realm下建了一个名为felord的用户.今天就来尝试一下对应的Spring Boot Adapter, ...
- keycloak mysql_Keycloak换mysql存储详细步骤
Keycloak默认是采用的H2数据库,一个轻量级的嵌入式数据库.如果要生产上用,显然这个数据库是不太适合的. 下面我给大家分享一下我替换成mysql的经验步骤. 一.创建数据库 登录mysql 创建 ...
- VMware Identity Manager 与CAS, Keycloak的集成
VMwareIdentity Manager (简称vIDM)是VMware开发的一套功能强大的身份管理系统.用户利用这套系统可以实现企业级应用的(包括SAAS,虚拟应用和桌面,原生的移动应用,Win ...
- keycloak集群化的思考
文章目录 简介 keycloak中的集群 load balancing负载均衡 暴露客户端IP地址 sticky sessions 和 非sticky sessions shared database ...
- 在wildfly中使用SAML协议连接keycloak
文章目录 简介 OpenID Connect和SAML SAML的工作流程 在keycloak中使用SAML 准备wildfy和应用程序 简介 我们知道SSO的两个常用的协议分别是SAML和OpenI ...
- keycloak 调研资料
1.https://www.keycloak.org/docs/latest/server_development/index.html 下载keycloak 2.https://gitee.com/ ...
最新文章
- R语言删除包含缺失值的行并将字符数据列(character)转化为因子列(factor)实战
- javaweb里边的重定向与转发的区别
- LibLinear(SVM包)使用说明之(一)README
- sql server php 案例,php连接sql server 2008案例
- hash 值重复_“重复”相关的问题
- 非IT人士的云栖酱油之行 (程序猿迷妹的云栖之行)
- h5页面预览pdf文件_H5 页面如何查看 PDF 文件
- 模电十:555定时器
- control reaches end of non-void function
- 专访王豫翔:编程道路上的“三少三多”(摘录)
- 浅谈 Web 3.0
- 翻译go项目代码英文注释
- 论文的可复现性,能否量化分析?
- Unity减少安装包的大小总结
- 六发左轮java_缅怀逝去的塞班 盘点那些经典的JAVA手游
- 快看!千亿蓝海一触即发,lazada越南致富风口逢卖必爆
- 集装箱 扩展程序_工厂一平米集装箱公厕销售,供求信息
- 当前物联网应用中,边缘计算还存在这些问题!
- 基于java+ssm教学质量评价系统(学生评教)-计算机毕业设计
- 用C语言编写你自己内核
热门文章
- List删除指定元素以及List删除与另一List相同元素的方法
- java api iphone版_Java Platform, Enterprise Edition 5/6/7 API Specification
- 趣学JAVASCRIPT 教孩子学编程pdf
- 含文档+PPT+源码等]精品基于Uniapp+SSM实现的android在线点单系统APP[包运行成功]Java毕业设计Android项目源码
- 怎么把多个pdf文件合并成一个?一分钟解决
- 用python给你带来你的桃花运,详细解析画一棵表白树!
- Vscode C环境配置
- django导入excel
- 网站屏蔽中文浏览器/英文浏览器方法
- Halcon clolor_pieces.hedv:分类器_颜色识别