返回顶部
首页 > 资讯 > 前端开发 > VUE >如何使用keycloak
  • 750
分享到

如何使用keycloak

2024-04-02 19:04:59 750人浏览 泡泡鱼
摘要

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

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

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

如何使用keycloak

当然,我们有另外一个选择: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端口。

如何使用keycloak

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

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

如何使用keycloak

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

Http://127.0.0.1:8080/auth/

1.  创建Realms

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

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

如何使用keycloak

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

如何使用keycloak

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

如何使用keycloak

2. 创建权限

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

如何使用keycloak

3. 创建用户

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

如何使用keycloak

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

如何使用keycloak

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

我们当然是把它删掉。

如何使用keycloak

4. 创建client

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

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

如何使用keycloak

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格式。

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

如何使用keycloak

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

如何使用keycloak

请求下面的地址,可以验证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”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 如何使用keycloak

本文链接: https://lsjlt.com/news/84474.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用keycloak
    本篇内容主要讲解“如何使用keycloak”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用keycloak”吧!这里的cas不是Java并发包中的CAS,...
    99+
    2024-04-02
  • Spring Boot应用程序中如何使用Keycloak详解
    目录正文什么是Keycloak?我们为什么要使用Keycloak?在Spring Boot 应用程序中使用keycloak安装Keycloak添加应用程序添加用户创建 Spring ...
    99+
    2023-05-20
    Spring Boot使用Keycloak SpringBoot Keycloak
  • Keycloak各种配置及API的使用说明
    目录1.创建client2.怎样拿到access token信息 2.1采用前端登录(例如angular应用)的情况2.2 使用keycloak API3.拿到用户role...
    99+
    2023-03-09
    Keycloak配置 API的使用 Keycloak各种配置
  • Keycloak各种配置及API使用的方法是什么
    这篇文章主要介绍了Keycloak各种配置及API使用的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Keycloak各种配置及API使用的方法是什么文章都会有所收获,下面我们一起来看看吧。1.创建c...
    99+
    2023-07-05
  • 如何使用redis
    这期内容当中小编将会给大家带来有关如何使用redis ,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。安装redis后,在命令行输入“redis-cli"会车输入...
    99+
    2024-04-02
  • patchnavicat如何使用
    小编给大家分享一下patchnavicat如何使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、把patchNavicat....
    99+
    2024-04-02
  • phpmyadmin如何使用
    这篇文章给大家分享的是有关phpmyadmin如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。创建数据库在 phpMyAdmin 的主界面中,可以看见有 “语言-langu...
    99+
    2024-04-02
  • 如何使用navicat
    小编给大家分享一下如何使用navicat,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Navicat注册和激活的过程就是Navicat安装的过程,激活过程也比较简便,只要输入Navicat...
    99+
    2024-04-02
  • 如何使用ORM
    本篇内容介绍了“如何使用ORM”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ObjectvieSQL简介O...
    99+
    2024-04-02
  • autotrace如何使用
    这篇文章给大家分享的是有关autotrace如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。autotrace定义:autotrace是一个可以自动获取SQL执行计划和相关...
    99+
    2024-04-02
  • SqlLoader如何使用
    这篇文章将为大家详细讲解有关SqlLoader如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。SQL*Loader(SQLLDR)是Oracle的高速批量数据加载工...
    99+
    2024-04-02
  • navicat如何使用
    这篇文章将为大家详细讲解有关navicat如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Navicat可以支持连接多种数据库,使用上的功能也比较强大。如果使用了I...
    99+
    2024-04-02
  • 如何使用DataGrip
    小编给大家分享一下如何使用DataGrip,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!DataGrip是什么DataGrip是...
    99+
    2024-04-02
  • navicat12如何使用
    这篇文章主要介绍navicat12如何使用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Navicat 12 具备多项改进和新功能,能满足你对数据库开发的需求。过百种增强的功能和耳目...
    99+
    2024-04-02
  • 如何使用CassandraUnit
    这篇文章主要为大家展示了“如何使用CassandraUnit”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用CassandraUnit”这篇文章吧。  C...
    99+
    2024-04-02
  • Hibernate如何使用
    这篇文章主要介绍Hibernate如何使用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!  hibernate的来源  数据在各个层次之间流转,在流转过程中会发生数据类型转换等一系列...
    99+
    2024-04-02
  • 如何使用NPM
    这篇文章主要为大家展示了“如何使用NPM”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用NPM”这篇文章吧。1. 初始化包我们可以运行 npm init命...
    99+
    2024-04-02
  • serialize()如何使用
    这篇文章主要讲解了“serialize()如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“serialize()如何使用”吧!   .seriali...
    99+
    2024-04-02
  • div如何使用
    本篇内容主要讲解“div如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“div如何使用”吧!<!doctype html> <...
    99+
    2024-04-02
  • callbacks.locked()如何使用
    本文小编为大家详细介绍“callbacks.locked()如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“callbacks.locked()如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作