Header
Header contains the algorithms like RSA or HMACSHA256 and the information of the type of Token.
Payload
Payload contains the information of rows, i.e., user credentials.
How Does JWT Work?
Step 1
Client logs in with his/her credentials.
Step 2
Server generates a Jwt token at server side.
Step 3
After token generation, the server returns a token in response.
Step 4
Now, the client sends a copy of the token to validate the token.
Step 5
The server checks JWT token to see if it's valid or not.
Step 6
After the token is validated, the server sends a status message to the client.
[图片上传中...(-4ee818-1642837712343-0)]
授权流程:
1、用户请求登录,携带用户名密码到辩亩轿授权中心
2、授权中心携携肆带用户名密码,到用户中心查询用户
3、查询如果正确,生成JWT凭证
4、返回JWT给用户
鉴权流程:
1、用户请求某微服务功能,携带JWT
2、微服务将jwt交给授权中心校验
3、授权中心返回校验结果到微服务
4、微服耐伏务判断校验结果,成功或失败
5、失败则直接返回401
6、成功则处理业务并返回
@[TOC]
@[TOC]
1.#Keycloak项目配置
步骤****1****:****Keycloak****入门
请参阅Keycloak入门 文档 以运行和设置keycloak管理员用户。
运行Keycloak后,使用 http:// localhost:8080 / auth 访问keycloak管理控制台
设置keycloak用户名= admin,密码= admin。
第****2****步:创建开发领域
名称:coablt
[图片上传失败...(image-9626fc-1578649185668)]
图1:添加开发领域
客户端ID: account
客户端协议: openid-connect
启用直接访问授权Direct Access Grants Enabled :No
服务帐号已启用 Service Accounts Enabled :No
授权已启用 Authorization Enabled****:****No
[图片上传失败...(image-904bdf-1578649185668)]
步骤****4****:创建客户端角色
在客户端下创建一个角色。在这种情况下,角色admin在雇员服务下创建。
[图片上传失败...(image-1be1e9-1578649185668)]
图3:创建角色
第****6****步:创建一个映射器(在访问令牌中获取****user_name****)
Keycloak访问令牌是 JWT 。它是一个JSON,并且该JSON中的每个字段都称为声明。默认情况下,登拿贺录用户名会在访问令牌中名为“ preferred_username”的声明中返回。Spring Security OAuth2资源服务器在名为 “ user_name” 的声明中需要用户名。因此,我们必须创建下面的映射器,以将登录的用户Id映射到名为user_name的新声明。
[图片上传失败...(image-693526-1578649185668)]
图4:创建映射器
步骤****7****:建立使用者
[图片上传失败...(image-b16592-1578649185668)]
图5:创建用户
步骤****8****:将客户端角色映射到用户
为了提供对客户端(微服务)的访问,需要为用户分配/映射相应的角色。
[图片上传失败...(image-c5609f-1578649185668)]
图6:为用户分配角色
使用****PostMan****获取访问令牌(用于测试)
选择 授权 类型为OAuth 2.0,点击“获取新访耐搭问令牌”,然后输入以下详细信息。
[图片上传失败...(image-6f4c53-1578649185668)]
邮递员工具屏幕快照:从客户端的密钥斗篷获取访问令牌
· 确保在请求令牌时选择客户端身份验证作为“在正文中发送客户端凭据”。
· 回调URL是在Keycloak中配置的重定向URL。
· 客户端机密可能与您不同,请从客户端配置中的密钥库中复昌敏拿制一个。
· 您也可以使用 https://jwt.io 检查收到的令牌的内容。
步骤****10****:创建一个****Spring Boot****应用程序
[图片上传失败...(image-45efc0-1578649185668)]
依存关系
[图片上传失败...(image-d66a1b-1578649185668)] 步骤****11****:配置****application.yml
常规安全属性
[图片上传失败...(image-992887-1578649185668)] 使用****OAuth2****资源服务器保护****REST****端点的属性
[图片上传失败...(image-aa43c4-1578649185668)]
图7:复制jwt公钥值
注******1******:****可以从领域级别的公钥复制 security.oauth2.resource.jwt.key-value 属性值。这非常重要,此属性是使用****JwtAccessTokenCustomizer******的****属性,我们将在后面看到。
** 注意******2******:****属性值会根据您的配置而有所不同,应注意使用正确的值。
步骤****12****:配置****APi****管理账户
[图片上传失败...(image-b408a1-1578649185667)]
[图片上传失败...(image-71cf2b-1578649185667)]
[图片上传失败...(image-70e51d-1578649185667)]
[图片上传失败...(image-974948-1578649185667)]
步骤****13****:配置后台****APi****管理账户
因为项目初始化了Admin超级管理员,所以需要keycloak配置一个admin的新用户
然后将该用户ID 复制到sys_user表的Oauth2_id字段内
[图片上传失败...(image-715b3b-1578649185667)]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)