千家信息网

如何使用keycloak

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"如何使用keycloak",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用keycloak"吧!这里的cas不是Java并发包中的C
千家信息网最后更新 2026年11月03日如何使用keycloak

本篇内容主要讲解"如何使用keycloak",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用keycloak"吧!

这里的cas不是Java并发包中的CAS,做过单点登录(SSO)的同学应该对它不会陌生。这个玩意太古老了,而且生态非常庞大,以至于我现在想起它都心有余悸。很长一段时间,做单点登录,或多或少都要参考CAS,这让人很头痛。

当然,我们有另外一个选择:keycloak,它是jboss出品的。凡是jboss出品的东西,都出奇的重,keycloak也不例外,涵盖了权限认证的各种场景的功能。这也是可以理解的,毕竟认证是个又脏又累的活,封装好它很不容易。

这就造成了,虽然keycloak提供了一个简单易用的控制后台,如果不了解一些验证的概念,用来来也并不顺手。

今天,xjjdog就来一个quickstart,品尝一下这个权限服务的味道。

首先,下载它的安装包。

wget -c https://downloads.jboss.org/keycloak/11.0.2/keycloak-11.0.2.zip

执行bin目录下的./standalone.sh文件,即可启动keycloak server。可以看到它监听在9990端口。

此时,访问这个链接得不到任何信息,因为里面还没有一个初始用户。就像盘古开天辟地一样,我们需要一个盘古。

使用add-user.sh命令,初始化一个用户。如果你初始化的是admin,就需要先把它给启用了。初始化以后,就可以在访问后台进行设置了。

Keycloak Server部署在8080端口,可以通过以下链接进行访问。

http://127.0.0.1:8080/auth/

1. 创建Realms

要想使用Keycloak,需要先生成一个Realm。Realm是领域的意思,在它其中,所有的用户和权限都是独立的。如果这些公司愿意的话,我可以把京东和淘宝的用户全部放在一个server上。

举以上例子是想说明,Realm这个东西,就是一个隔离措施。鼠标悬浮在左上角,点击add realm即可进入创建页面。

创建realm很简单,只需要提供一个名字就可以了。

但不要高兴的太早。作为一个全局配置,它的选项肯定是非常多的。不过这都属于自定义性的增强使用,我们这里不讨论它。

2. 创建权限

接下来,将创建两个权限组。权限也比较好理解,就是一个字符串而已。我们创建ROLE_ADMIN和ROLE_USER两个权限。

3. 创建用户

该到了创建用户的时间了。在Users选项卡中点击新建就可进入创建目录。我们这里创建一个叫做xjjdog0的用户。

用户的选项也是非常多的。我们主要关注两部分。一个是Credentials,可以更新设置用户的密码;一个是Role Mappings,可以设置用户的权限。我们这里都操作一下,把xjjdog0的密码设置为123456。

注意,这里有一个小小的细节。如果我们更新了用户的密码。在用户设置的主页面,将会出现update Password字样。它的意思是,需要用户进行一次自己的密码更新,这个用户才能真正使用。如果你不需要强制用户设置一遍密码,就可以把它删掉。

我们当然是把它删掉。

4. 创建client

要想在xjjdog这个领域里进行权限认证,还需要拿到一个clientid,用来标示自己的身份。

我们这里创建了一个叫做xjjdemo的client,稍后会在token接口中带它进去。

5. 测试token接口获取接口的地址为:

ip:port/auth/realms/icp/protocol/openid-connect/token

在这里,根据我们上面设置的地址信息,可以构造出token的请求地址为:

http://localhost:8080/auth/realms/xjjdog/protocol/openid-connect/token

使用curl来获取token。

curl -XPOST -d 'client_id=xjjdemo&grant_type=password&scope=openid&username=xjjdog0&password=123456'  http://localhost:8080/auth/realms/xjjdog/protocol/openid-connect/token

提供了client_id,grant_type,username,password等参数,发送post请求后会返回一个json。

{     "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICItMXF4RW9NTU1ON29NM2NrZUhPaEowaFVZVGxQNThfMDNwMDYzV1hIVzQwIn0.eyJleHAiOjE2MDI2NTQ1NzMsImlhdCI6MTYwMjY1NDI3MywianRpIjoiMGQ1ZmZhNzgtZTQ5OS00MmFmLTgyMTUtNjgwODNiNjQ4ODRlIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2F1dGgvcmVhbG1zL3hqamRvZyIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiJjYWQ3NjNiMS01OTg3LTQzYTItOGQ4MC0yZDVlODY1ZGI3MTYiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiJ4ampkZW1vIiwic2Vzc2lvbl9zdGF0ZSI6ImQxMWQzOWM2LTBhMzItNDNlYi1iYTIyLTg1MzdlZWE4MDcwNiIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiLyoiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIlJPTEVfVVNFUiIsIm9mZmxpbmVfYWNjZXNzIiwiUk9MRV9BRE1JTiIsInVtYV9hdXRob3JpemF0aW9uIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsiYWNjb3VudCI6eyJyb2xlcyI6WyJtYW5hZ2UtYWNjb3VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwidmlldy1wcm9maWxlIl19fSwic2NvcGUiOiJvcGVuaWQgZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwicHJlZmVycmVkX3VzZXJuYW1lIjoieGpqZG9nMCJ9.DVX3VtSjq-hSsjEWqudKIcZhSpIuuDyalRx0epD93HMX8ap5z_7LpeITdb3aRv3AFIBQe8d80SsDZwUIj9NSobyMo8US4ZF4cLyHEYsp881-vJInnrQ-vbnxwShsx1r1S8NO7dV1CP-aD8b611JBtzxV-P6GPbiZH283BFMnKFHQ68aox0_VYEx3dq3PA53LyM8-_rCElrpyTHk1dUdC7OluPgLx390m9H0TV_2aR9ufXGA4e-xW5fmOFvAHGlg_t3BoDVAduQkoy_wYHA_NbP3uRIOcC0pgOonAsspT2lXA_xkPU8oIpPvBQzcV4eWivm1WV_y6K4kOvn0ZJtkFmA",     "expires_in": 300,     "refresh_expires_in": 1800,     "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJjNGMwMzMzOC04MDU5LTRlNDItODYxMC1iYzkzMjNjZDY5NmIifQ.eyJleHAiOjE2MDI2NTYwNzMsImlhdCI6MTYwMjY1NDI3MywianRpIjoiNGE5ZjgxMGItMzc1ZC00OGRmLTg3YjYtN2UwODY4MmFhNDYxIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2F1dGgvcmVhbG1zL3hqamRvZyIsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hdXRoL3JlYWxtcy94ampkb2ciLCJzdWIiOiJjYWQ3NjNiMS01OTg3LTQzYTItOGQ4MC0yZDVlODY1ZGI3MTYiLCJ0eXAiOiJSZWZyZXNoIiwiYXpwIjoieGpqZGVtbyIsInNlc3Npb25fc3RhdGUiOiJkMTFkMzljNi0wYTMyLTQzZWItYmEyMi04NTM3ZWVhODA3MDYiLCJzY29wZSI6Im9wZW5pZCBlbWFpbCBwcm9maWxlIn0.mJYtSMQLgEDlzpX7_WC5pAF8s2DENZB1IBv20R2kZ8s",     "token_type": "bearer",     "id_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICItMXF4RW9NTU1ON29NM2NrZUhPaEowaFVZVGxQNThfMDNwMDYzV1hIVzQwIn0.eyJleHAiOjE2MDI2NTQ1NzMsImlhdCI6MTYwMjY1NDI3MywiYXV0aF90aW1lIjowLCJqdGkiOiJmN2VjYjJlNi1mYmRlLTQ2ZjItOWE1Mi00YTEyMjlkYzQ5YjIiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjgwODAvYXV0aC9yZWFsbXMveGpqZG9nIiwiYXVkIjoieGpqZGVtbyIsInN1YiI6ImNhZDc2M2IxLTU5ODctNDNhMi04ZDgwLTJkNWU4NjVkYjcxNiIsInR5cCI6IklEIiwiYXpwIjoieGpqZGVtbyIsInNlc3Npb25fc3RhdGUiOiJkMTFkMzljNi0wYTMyLTQzZWItYmEyMi04NTM3ZWVhODA3MDYiLCJhdF9oYXNoIjoiM1h0eEhqTUQ5Q3FNdEwxcWFxTlFfZyIsImFjciI6IjEiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsInByZWZlcnJlZF91c2VybmFtZSI6InhqamRvZzAifQ.EvUbCmrylfwFL0rhyX36nnxFNRTvtYZAkPYtLv6r8CCbolRHwNJDJflu44BpLQBJGD4UNFkvfsz1BmU-mAw5soxS7eaupOm8LGkUm_qmgj-qtH0eGRi4FlUq4Tw3gx4lGoyR1zNlt1dkcAhjNtyXkhZWjcjDownLgFajNrUCOUiFw1XZwBDPlyy5AQ8d1Kkc5RIF6zhy4bkXKp_fakTNWJPr2-C1xYcEssGOv81FVUajszmItnWP4SnJvzER_njpmnjg_b1lPMng-zMx-R7zgQrx06JStO0IKUd8hXSSmudpw652whR31cCWbTBhfNB2RH_Rnfrau2047WZ36I8zmg",     "not-before-policy": 0,     "session_state": "d11d39c6-0a32-43eb-ba22-8537eea80706",     "scope": "openid email profile" }

access_token和id_token比较眼熟,它用.分割了三部分,看起来像是JWT格式。

使用工具解码一看,果然是,于是瞬间的起来。

可以看到用户信息的playload区域内容还是非常多的。这种token放在网络上传输,肯定是非常浪费的。不过都21世纪了,这点浪费也是可以接受的。

请求下面的地址,可以验证userinfo。

curl -XPOST -d  'access_token={上面的token}' http://localhost:8080/auth/realms/xjjdog/protocol/openid-connect/userinfo

你将获得以下字样。

{     "sub": "cad763b1-5987-43a2-8d80-2d5e865db716",     "email_verified": false,     "preferred_username": "xjjdog0" }

End可以看到,keycloak用的是无状态的方式进行的token管理,是基于比较先进的 OAuth 2.0 和 JSON Web Token(JWT) 规范来设计的。这对于互联网应用来说,就天然拥有了横向扩展的能力。

keycloak集成到SpringBoot非常简单,官方就有这样的demo。keycloak的开发也非常活跃,master分支就在刚刚还提交了代码。总之,值得一试!

到此,相信大家对"如何使用keycloak"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

用户 权限 密码 地址 信息 内容 接口 更新 认证 东西 两个 后台 字样 就是 意思 时间 目录 端口 部分 链接 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司简介 河南云网互联网络科技有限公司 疫情对互联网科技公司影响 智能科技公司是互联网公司吗 与互联网科技公司 华中科技大学互联网 济南和联互联网科技有限公司 湖南洣水互联网科技有限公司扣款 江苏南京365互联网科技 随着互联网科技发展 互联网和黑科技的看法 互联网科技产业特征 互联网媒体平台算高科技产业 本届互联网博览会上的黑科技 徐州市互联网科技有限公司 南通创西澳互联网科技有限公司 银行科技岗属于互联网吗 互联网相关科技技术 福建互联网展示科技馆设计 银川新华互联网科技学校招聘 为想互联网科技怎么样 厦门中拓互联网络科技有限公司 美国互联网科技 互联网 的科技创新 奇士达互联网科技 长沙茂晟互联网科技有限公司 济南有互联网科技公司吗 电子商务与互联网科技的关系 富国互联网金融科技混合基金 上海同邻互联网科技有限公司规模
0