简介

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的使用相关推荐

  1. OAuth2 服务器Keycloak中的Realm

    前几篇我和大家一起对Keycloak进行了粗略的了解.随着逐步的了解,我发现进入了一个误区,原本以为Spring Security整合Keycloak的重心在于Spring Security这一方面, ...

  2. 一个接口是如何在Keycloak和Spring Security之间执行的

    在上一篇我们对Keycloak的常用配置进行了熟悉,今天我们来对Keycloak适配Spring Security的执行流程做一个分析,简单了解一下其定制的一些Spring Security过滤器. ...

  3. Keycloak Spring Security适配器的常用配置

    在上一篇Keycloak系列文章中,我们把Keycloak同Spring Security成功适配,其中用了一个keycloak.json的配置.它包含了不少属性,我觉得在深入学习Keycloak的过 ...

  4. Spring Security 中使用Keycloak作为认证授权服务器

    Keycloak对流行的Java应用提供了适配器.在系列文章的上一篇我们演示了针对Spring Boot的安全保护,用的就是适配器的一种.Keycloak同样提供Spring Security的适配器 ...

  5. Keycloak简单几步实现对Spring Boot应用的权限控制

    我们在上一篇初步尝试了keycloak,手动建立了一个名为felord.cn的realm并在该realm下建了一个名为felord的用户.今天就来尝试一下对应的Spring Boot Adapter, ...

  6. keycloak mysql_Keycloak换mysql存储详细步骤

    Keycloak默认是采用的H2数据库,一个轻量级的嵌入式数据库.如果要生产上用,显然这个数据库是不太适合的. 下面我给大家分享一下我替换成mysql的经验步骤. 一.创建数据库 登录mysql 创建 ...

  7. VMware Identity Manager 与CAS, Keycloak的集成

    VMwareIdentity Manager (简称vIDM)是VMware开发的一套功能强大的身份管理系统.用户利用这套系统可以实现企业级应用的(包括SAAS,虚拟应用和桌面,原生的移动应用,Win ...

  8. keycloak集群化的思考

    文章目录 简介 keycloak中的集群 load balancing负载均衡 暴露客户端IP地址 sticky sessions 和 非sticky sessions shared database ...

  9. 在wildfly中使用SAML协议连接keycloak

    文章目录 简介 OpenID Connect和SAML SAML的工作流程 在keycloak中使用SAML 准备wildfy和应用程序 简介 我们知道SSO的两个常用的协议分别是SAML和OpenI ...

  10. keycloak 调研资料

    1.https://www.keycloak.org/docs/latest/server_development/index.html 下载keycloak 2.https://gitee.com/ ...

最新文章

  1. R语言删除包含缺失值的行并将字符数据列(character)转化为因子列(factor)实战
  2. javaweb里边的重定向与转发的区别
  3. LibLinear(SVM包)使用说明之(一)README
  4. sql server php 案例,php连接sql server 2008案例
  5. hash 值重复_“重复”相关的问题
  6. 非IT人士的云栖酱油之行 (程序猿迷妹的云栖之行)
  7. h5页面预览pdf文件_H5 页面如何查看 PDF 文件
  8. 模电十:555定时器
  9. control reaches end of non-void function
  10. 专访王豫翔:编程道路上的“三少三多”(摘录)
  11. 浅谈 Web 3.0
  12. 翻译go项目代码英文注释
  13. 论文的可复现性,能否量化分析?
  14. Unity减少安装包的大小总结
  15. 六发左轮java_缅怀逝去的塞班 盘点那些经典的JAVA手游
  16. 快看!千亿蓝海一触即发,lazada越南致富风口逢卖必爆
  17. 集装箱 扩展程序_工厂一平米集装箱公厕销售,供求信息
  18. 当前物联网应用中,边缘计算还存在这些问题!
  19. 基于java+ssm教学质量评价系统(学生评教)-计算机毕业设计
  20. 用C语言编写你自己内核

热门文章

  1. List删除指定元素以及List删除与另一List相同元素的方法
  2. java api iphone版_Java Platform, Enterprise Edition 5/6/7 API Specification
  3. 趣学JAVASCRIPT 教孩子学编程pdf
  4. 含文档+PPT+源码等]精品基于Uniapp+SSM实现的android在线点单系统APP[包运行成功]Java毕业设计Android项目源码
  5. 怎么把多个pdf文件合并成一个?一分钟解决
  6. 用python给你带来你的桃花运,详细解析画一棵表白树!
  7. Vscode C环境配置
  8. django导入excel
  9. 网站屏蔽中文浏览器/英文浏览器方法
  10. Halcon clolor_pieces.hedv:分类器_颜色识别