keycloak~账号密码认证和授权码认证
用户名密码登录
- POST /auth/realms/demo/protocol/openid-connect/token
- 请求体 x-www-form-urlencoded
grant_type:password
username:test
password:123456
client_secret:ec0fd1c6-68b0-4c39-a9fa-c3be25c8ef01
client_id:democlient
- 响应
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJFXzZpaDM1eVRMSk1pZUkwdnFnOU1tVFFySjZSY1VTeGlYZU5kY01hb1lrIn0.eyJleHAiOjE2MTk2NjEyODgsImlhdCI6MTYxOTY1ODI4OCwianRpIjoiMjE4NTliMjEtNzE1Mi00NDIzLWI5ZWMtNTQ4NDE0OTMxOTRiIiwiaXNzIjoiaHR0cDovLzE5Mi4xNjguNC4yNjo4MDgwL2F1dGgvcmVhbG1zL2ZhYmFvIiwiYXVkIjpbInJlYWxtLW1hbmFnZW1lbnQiLCJhY2NvdW50Il0sInN1YiI6IjAwNjcyOThkLTk3N2YtNGVkMy1hOTBjLTAxNWM1YzRjYTAwYyIsInR5cCI6IkJlYXJlciIsImF6cCI6ImRlbW9jbGllbnQiLCJzZXNzaW9uX3N0YXRlIjoiNzY1OTY5ZWMtOTRkYS00ZWRiLTlkY2ItZTE1ZWEzZTBhZDNiIiwiYWNyIjoiMSIsInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyLns7vnu5_nrqHnkIYiLCJvZmZsaW5lX2FjY2VzcyIsInVtYV9hdXRob3JpemF0aW9uIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsicmVhbG0tbWFuYWdlbWVudCI6eyJyb2xlcyI6WyJ2aWV3LXJlYWxtIiwidmlldy1pZGVudGl0eS1wcm92aWRlcnMiLCJtYW5hZ2UtaWRlbnRpdHktcHJvdmlkZXJzIiwiaW1wZXJzb25hdGlvbiIsInJlYWxtLWFkbWluIiwiY3JlYXRlLWNsaWVudCIsIm1hbmFnZS11c2VycyIsInF1ZXJ5LXJlYWxtcyIsInZpZXctYXV0aG9yaXphdGlvbiIsInF1ZXJ5LWNsaWVudHMiLCJxdWVyeS11c2VycyIsIm1hbmFnZS1ldmVudHMiLCJtYW5hZ2UtcmVhbG0iLCJ2aWV3LWV2ZW50cyIsInZpZXctdXNlcnMiLCJ2aWV3LWNsaWVudHMiLCJtYW5hZ2UtYXV0aG9yaXphdGlvbiIsIm1hbmFnZS1jbGllbnRzIiwicXVlcnktZ3JvdXBzIl19LCJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50Iiwidmlldy1hcHBsaWNhdGlvbnMiLCJ2aWV3LWNvbnNlbnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsIm1hbmFnZS1jb25zZW50IiwiZGVsZXRlLWFjY291bnQiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InJvbGVzIGVtYWlsIHByb2ZpbGUiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsIm5hbWUiOiLmtbcgc2FuIiwicHJlZmVycmVkX3VzZXJuYW1lIjoidGVzdCIsImdpdmVuX25hbWUiOiLmtbciLCJmYW1pbHlfbmFtZSI6InNhbiIsImVtYWlsIjoidGVzdEBzaW5hLmNvbSJ9.w2z5a2OY069aQoB4uov9nHtCJL3dwqVH6rHRkyPP9CdU3iP2gFJa10-XqgOUr747PGiTKlaHHn-MO7nW7WYneJKZ0sw-SlaJjOc0zqVBZo26hBUO-JpXrnu26nmoAznpUyWM3P3enXMeW6mkTYwTuAAoaDlgJZcuFxknEjX7vGz0fClHZv60_G77yRInCy8hl9z1aNXGq9BME6ZSXXtGcgU9sLhQT6EqumegdLq7CaxKKLJgmD1hjmQhuhaBep3MkgJiLFmjM7zzLbpPEJ7b8mTeoydCOdqg0xFIZSV9pYQ6bEXC9JSRzGBC4VCeDVSMhVkOCozvgy-8-fPSgbIurQ",
"expires_in": 3000,
"refresh_expires_in": 1800,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJkNzg3MGJjNi0yMDY3LTQ3MjAtYWNmNC04MjRhZTIzMWFiZDAifQ.eyJleHAiOjE2MTk2NjAwODgsImlhdCI6MTYxOTY1ODI4OCwianRpIjoiYmJjNDY3NjAtMWE2NS00ODA4LWIyMmQtYzAyMDQ4NzA5YTQyIiwiaXNzIjoiaHR0cDovLzE5Mi4xNjguNC4yNjo4MDgwL2F1dGgvcmVhbG1zL2ZhYmFvIiwiYXVkIjoiaHR0cDovLzE5Mi4xNjguNC4yNjo4MDgwL2F1dGgvcmVhbG1zL2ZhYmFvIiwic3ViIjoiMDA2NzI5OGQtOTc3Zi00ZWQzLWE5MGMtMDE1YzVjNGNhMDBjIiwidHlwIjoiUmVmcmVzaCIsImF6cCI6ImRlbW9jbGllbnQiLCJzZXNzaW9uX3N0YXRlIjoiNzY1OTY5ZWMtOTRkYS00ZWRiLTlkY2ItZTE1ZWEzZTBhZDNiIiwic2NvcGUiOiJyb2xlcyBlbWFpbCBwcm9maWxlIn0.gXRGH6WgzykH9c4WTCS00G3w8gLZtk_0Bb3ziLNFUl0",
"token_type": "bearer",
"not-before-policy": 1619512543,
"session_state": "765969ec-94da-4edb-9dcb-e15ea3e0ad3b",
"scope": "roles email profile"
}
授权码登录
请求code
对于没有认证的接口,将会返回401,即没有登录,这时keycloak会将我们的请求重定向到keycloak的登录而,这时有几个参数将被发到keycloak服务端,用来获取code信息。
主要包括以下几个参数 :
Response_type:表示响应类型,这里我们是code
Client_id:表示为你这个客户端颁发的唯一标识
Redirect_uri:表示从keycloak服务端注册的合法的回调地址,支持通配符
Scope:表示认证范围,表示用户的openid方式
- GET /auth/realms/demo/protocol/openid-connect/auth
- QUERY
client_id:democlient
scope:openid
response_type:code
client_secret:ec0fd1c6-68b0-4c39-a9fa-c3be25c8ef01
redirect_uri:http://localhost:9090/callback
- 跳转到kc的登录页,完成用户名和密码的登录

- 登录成功之后,跳回callback删除,在url参数上带上了code

请求token
- POST /auth/realms/fabao/protocol/openid-connect/token
- 请求体 x-www-form-urlencoded
grant_type:authorization_code
code:68058719-add6-4b40-ab96-8e71af03827a.7a31b1a9-c3e8-46d4-b8cc-345012fcf4a2.25e52f60-5991-43dd-9108-873f60af385d
client_id:democlient
client_secret:ec0fd1c6-68b0-4c39-a9fa-c3be25c8ef01
scope:openid
redirect_uri:http://localhost:9090/callback
- 响应
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJFXzZpaDM1eVRMSk1pZUkwdnFnOU1tVFFySjZSY1VTeGlYZU5kY01hb1lrIn0.eyJleHAiOjE2MTk2NjMzMzQsImlhdCI6MTYxOTY2MDMzNCwiYXV0aF90aW1lIjoxNjE5NjYwMzIyLCJqdGkiOiI0ZTMxYzI0My0yOTAzLTQyZDQtYWE2Ny1hYmE0MzUzMTE5ZWQiLCJpc3MiOiJodHRwOi8vMTkyLjE2OC40LjI2OjgwODAvYXV0aC9yZWFsbXMvZmFiYW8iLCJhdWQiOlsicmVhbG0tbWFuYWdlbWVudCIsImFjY291bnQiXSwic3ViIjoiMDA2NzI5OGQtOTc3Zi00ZWQzLWE5MGMtMDE1YzVjNGNhMDBjIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiZGVtb2NsaWVudCIsInNlc3Npb25fc3RhdGUiOiIxNDgxMmY1MC1iOWY3LTRjZWUtYmU1Ni1iZjliZWY1Yzk2MWEiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIuezu-e7n-euoeeQhiIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJyZWFsbS1tYW5hZ2VtZW50Ijp7InJvbGVzIjpbInZpZXctcmVhbG0iLCJ2aWV3LWlkZW50aXR5LXByb3ZpZGVycyIsIm1hbmFnZS1pZGVudGl0eS1wcm92aWRlcnMiLCJpbXBlcnNvbmF0aW9uIiwicmVhbG0tYWRtaW4iLCJjcmVhdGUtY2xpZW50IiwibWFuYWdlLXVzZXJzIiwicXVlcnktcmVhbG1zIiwidmlldy1hdXRob3JpemF0aW9uIiwicXVlcnktY2xpZW50cyIsInF1ZXJ5LXVzZXJzIiwibWFuYWdlLWV2ZW50cyIsIm1hbmFnZS1yZWFsbSIsInZpZXctZXZlbnRzIiwidmlldy11c2VycyIsInZpZXctY2xpZW50cyIsIm1hbmFnZS1hdXRob3JpemF0aW9uIiwibWFuYWdlLWNsaWVudHMiLCJxdWVyeS1ncm91cHMiXX0sImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJ2aWV3LWFwcGxpY2F0aW9ucyIsInZpZXctY29uc2VudCIsIm1hbmFnZS1hY2NvdW50LWxpbmtzIiwibWFuYWdlLWNvbnNlbnQiLCJkZWxldGUtYWNjb3VudCIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoib3BlbmlkIHJvbGVzIGVtYWlsIHByb2ZpbGUiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsIm5hbWUiOiLmtbcgc2FuIiwicHJlZmVycmVkX3VzZXJuYW1lIjoidGVzdCIsImdpdmVuX25hbWUiOiLmtbciLCJmYW1pbHlfbmFtZSI6InNhbiIsImVtYWlsIjoidGVzdEBzaW5hLmNvbSJ9.Xx9ndq1dtgHgqZNLsOYXYqB31_QmPvb30PqwZBJ5jq-mVB2-FxYQhH-u4g0L4wJIPRABBJ_bppcEgtwdIAo45isODmmhz-VYOB47vbLw44seGXnRvsZDAhImLm-p_fccfUcGdFfceZs3a3Tzz-mv7p-tQ64dMIS9DWCWTfJuOpoSOEDRvEvnGzOxWY9EqIk5fL2Y-ys7J2QAcOPCvZJNnE_mYPXV8vu5c0wGB9Pt7JYISX8IbizCHhXZHCd20h5maM44VDPCV9MSxsP8KQa_emdILT8HT_3uy1E1KmdXqde_S82IZsE-CPMZC6QjuTYf15Fh-umo0ncYqjTwX8piTQ",
"expires_in": 3000,
"refresh_expires_in": 1800,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJkNzg3MGJjNi0yMDY3LTQ3MjAtYWNmNC04MjRhZTIzMWFiZDAifQ.eyJleHAiOjE2MTk2NjIxMzQsImlhdCI6MTYxOTY2MDMzNCwianRpIjoiYzFlZWU4ZDEtYmEwZC00OWJmLWJhOWMtZjk5Nzk4ZWNkNGZlIiwiaXNzIjoiaHR0cDovLzE5Mi4xNjguNC4yNjo4MDgwL2F1dGgvcmVhbG1zL2ZhYmFvIiwiYXVkIjoiaHR0cDovLzE5Mi4xNjguNC4yNjo4MDgwL2F1dGgvcmVhbG1zL2ZhYmFvIiwic3ViIjoiMDA2NzI5OGQtOTc3Zi00ZWQzLWE5MGMtMDE1YzVjNGNhMDBjIiwidHlwIjoiUmVmcmVzaCIsImF6cCI6ImRlbW9jbGllbnQiLCJzZXNzaW9uX3N0YXRlIjoiMTQ4MTJmNTAtYjlmNy00Y2VlLWJlNTYtYmY5YmVmNWM5NjFhIiwic2NvcGUiOiJvcGVuaWQgcm9sZXMgZW1haWwgcHJvZmlsZSJ9.y718VaUJ3Z8_ZSWquOubB5AcQtsRoYlaKrbqQPVLV_o",
"token_type": "bearer",
"id_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJFXzZpaDM1eVRMSk1pZUkwdnFnOU1tVFFySjZSY1VTeGlYZU5kY01hb1lrIn0.eyJleHAiOjE2MTk2NjMzMzQsImlhdCI6MTYxOTY2MDMzNCwiYXV0aF90aW1lIjoxNjE5NjYwMzIyLCJqdGkiOiI5ODIyMDExMS1kMjVmLTQwYTAtYjNlZi1hZDlhNjk2YjhlYjAiLCJpc3MiOiJodHRwOi8vMTkyLjE2OC40LjI2OjgwODAvYXV0aC9yZWFsbXMvZmFiYW8iLCJhdWQiOiJkZW1vY2xpZW50Iiwic3ViIjoiMDA2NzI5OGQtOTc3Zi00ZWQzLWE5MGMtMDE1YzVjNGNhMDBjIiwidHlwIjoiSUQiLCJhenAiOiJkZW1vY2xpZW50Iiwic2Vzc2lvbl9zdGF0ZSI6IjE0ODEyZjUwLWI5ZjctNGNlZS1iZTU2LWJmOWJlZjVjOTYxYSIsImF0X2hhc2giOiJjWjBaN2tlay1ONWlsN3ZRaWFtVTNRIiwiYWNyIjoiMSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwibmFtZSI6Iua1tyBzYW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Iua1tyIsImZhbWlseV9uYW1lIjoic2FuIiwiZW1haWwiOiJ0ZXN0QHNpbmEuY29tIn0.sIRpNtEbHKTcxCTAP5DaF-uK0jCO4atQvvFwPs3QrPxkcFq7oE3E1veyKuxfQo5oZfzEeKGAWsLshwZbng-idF6EKTIs_FeEcLJxiwsK1XiDzdRFfyr-rcCgM7assJx7Muah3xT-DgSdO9MzxW7Vfr_qauWbNeXyWzHCqO8sAUNxREVZZyVcFoqxD9JPIlrrCZQzAyEmvYtnNpF95uwUu0UgmHywLyg3drIqF8C5-kBxxWFUo4Z46YYmu4me3lmDzaohu26sSs2mHNfadTLxme3ir5kB23aeVpKplzr4ZVcO70HfZ6RU2Is8W__FRakB5XDhKLiRf_l4unaTtzbyKQ",
"not-before-policy": 1619660302,
"session_state": "14812f50-b9f7-4cee-be56-bf9bef5c961a",
"scope": "openid roles email profile"
}
JWT token解析
PAYLOAD数据载体主要包括用户ID,用户名,用户角色,过期时间等信息
Sub:用户ID
preferred_username:账号名称
Name:用户姓名
Email:电子邮件
realm_access:领域角色
resource_access:客户端(资源服务)角色
Azp:授权客户端
Typ:token的类型
Aud:被授权的客户端列表
Exp:过期时间
Iss: 当前领域的开放API
Scope对jwt的影响
我们可以配置域的scope,或者对指定的client配置 scope,如图

图中,我们把客户端democlient的scope里的roles移除后,在返回的token里将不会出现和角色有关的信息,即realm_access和resource_access将被移除。

keycloak~账号密码认证和授权码认证的更多相关文章
- Foxmail 登录 qq 账号时无法登录 提示我们设置了独立密码或使用授权码登录的解决方法
Foxmail 登录 qq 账号时无法登录 提示我们设置了独立密码或使用授权码登录的解决方法 1.首先我们设置我们邮箱的类型如下图所示 2.打开网页版的qq邮箱 在设置--->账户---&g ...
- Spring cloud微服务安全实战-5-5实现授权码认证流程(1)
目前为止已经完成了完整的用户逻辑 目前的问题是,用户在登陆的时候,用户名提交的是给前端服务器的.每个前端服务器的开发人员都可能接触到前端的用户名密码. 每一个客户端应用都要去处理登陆的逻辑,一单我的登 ...
- 学习Spring Security OAuth认证(一)-授权码模式
一.环境 spring boot+spring security+idea+maven+mybatis 主要是spring security 二.依赖 <dependency> <g ...
- Spring cloud微服务安全实战-5-6实现授权码认证流程(2)
授权服务器,返回给我一个授权码,这里我只需要把授权传回去就可以了.来证明我是这个服务器. URI的地址传和第一次的地址一样的,认证服务器会比,第一次跳转的请求和第二次申请令牌的请求redirect_u ...
- Oauth2.0认证---授权码模式
目录: 1.功能描述 2.客户端的授权模式 3.授权模式认证流程 4.代码实现 1.功能描述 OAuth在"客户端"与"服务提供商"之间,设置了一个授权层(au ...
- Spring Cloud2.0之Oauth2环境搭建(授权码模式和密码授权模式)
oauth2 server 微服务授权中心, github源码 https://github.com/spring-cloud/spring-cloud-security 对微服务接口做一些权 ...
- ASP.NET Core WebAPI中使用JWT Bearer认证和授权
目录 为什么是 JWT Bearer 什么是 JWT JWT 的优缺点 在 WebAPI 中使用 JWT 认证 刷新 Token 使用授权 简单授权 基于固定角色的授权 基于策略的授权 自定义策略授权 ...
- IdentityServer4 (3) 授权码模式(Authorization Code)
写在前面 1.源码(.Net Core 2.2) git地址:https://github.com/yizhaoxian/CoreIdentityServer4Demo.git 2.相关章节 2.1. ...
- OAuth2.0授权码模式实战
OAuth2.0是目前比较流行的一种开源授权协议,可以用来授权第三方应用,允许在不将用户名和密码提供给第三方应用的情况下获取一定的用户资源,目前很多网站或APP基于微信或QQ的第三方登录方式都是基于O ...
随机推荐
- CPU缓存是位于CPU与内存之间的临时数据交换器,它的容量比内存小的多但是交换速度却比内存要快得多。CPU缓存一般直接跟CPU芯片集成或位于主板总线互连的独立芯片上
一.什么是CPU缓存 1. CPU缓存的来历 众所周知,CPU是计算机的大脑,它负责执行程序的指令,而内存负责存数据, 包括程序自身的数据.在很多年前,CPU的频率与内存总线的频率在同一层面上.内存的 ...
- 攻防世界(一)baby_web
攻防世界系列:baby_web 方法一: 按照提示,初始界面自然想到index.php,访问后界面(注意到URL)仍是1.php 打开hackbar查看响应,发现确实有index.php点开看到了Fl ...
- Linux进阶之RAID磁盘阵列、系统启动及dd命令
本节内容 1. 磁盘阵列 RAID0: 条带卷 2+ 100% 读写速度快,不容错 RAID1: 镜像卷 2 50% 读写速度慢,容错 RAID5: 奇偶校验条带卷 3 读写速度快,容错 ...
- STM32F7系列时钟相关问题:HSE模式配置(旁路模式、非旁路模式
从时钟源的角度,分为两类外部时钟(E)和内部时钟(I).从时钟速率的角度,分为两类高速时钟(HS)和低速时钟(LS).而把它们组合起来就有四种时钟:HSE.HIS.LSE.LSI.至于为什么会有这么复 ...
- Modbus RTU CRC校验码计算方法
在CRC计算时只用8个数据位,起始位及停止位,如有奇偶校验位也包括奇偶校验位,都不参与CRC计算. CRC计算方法是: 1. 加载一值为0XFFFF的16位寄存器,此寄存器为CRC寄存器. 2. ...
- numpy tile()函数
tile(A,B)即在B的方向上,重复A 直接举栗子: A=[1,2] tile(A,2) 此时B=(2) ,B的方向仅包含列方向,将A在列方向上重复一次,得出结果如图1所示 图1-将A在列方向重 ...
- 安全漏洞扫描工具 burpsuite V1.7.32 资料
安装包下载地址:http://www.downxia.com/downinfo/229728.html 实战教程:https://t0data.gitbooks.io/burpsuite/conten ...
- Linux系统编程【5】——stty的学习
从文件的角度看设备 之前几篇文章介绍的编程是基于文件的.数据可以保存在文件中,也可以从文件中取出来做处理,再存回去.不仅如此,Linux操作系统还专门为这个东西建立了一套规则,就是前期介绍的" ...
- 图解CSS布局(一)- Grid布局
图解CSS布局(一)- Grid布局 先上图 简介 Grid 布局是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可 ...
- IDEA 通过ctrl+滚轮缩放字体大小
能用图解决的问题,尽量简单粗暴通俗易懂 1.第一种方式 2.第二种方式