学成在线-第16天-讲义- Spring Security Oauth2 JWT三

本文介绍了Spring Security Oauth2用于用户认证和授权的解决方案,详细阐述了授权码模式的工作流程,包括客户端请求认证、用户授权、获取令牌、资源服务器校验等步骤。同时提到了基础工程中使用JWT令牌机制并自定义用户身份信息,以及如何搭建认证服务器,创建数据库和理解相关配置表。
摘要由CSDN通过智能技术生成

2.3 Spring security Oauth2认证解决方案
本项目采用 Spring security + Oauth2完成用户认证及用户授权,Spring security 是一个强大的和高度可定制的身份验证和访问控制框架,Spring security 框架集成了Oauth2协议,下图是项目认证架构图: 

 
1、用户请求认证服务完成认证。 
2、认证服务下发用户身份令牌,拥有身份令牌表示身份合法。 
3、用户携带令牌请求资源服务,请求资源服务必先经过网关。 
4、网关校验用户身份令牌的合法,不合法表示用户没有登录,如果合法则放行继续访问。 
5、资源服务获取令牌,根据令牌完成授权。 
6、资源服务完成授权则响应资源信息。
3 Spring Security Oauth2研究
3.1 目标 
本项目认证服务基于Spring Security Oauth2进行构建,并在其基础上作了一些扩展,采用JWT令牌机制,并自定义了用户身份信息的内容。 本教程的主要目标是学习在项目中集成Spring Security Oauth2的方法和流程,通过
spring Security Oauth2的研究需要达到以下目标: 
1、理解Oauth2的授权码认证流程及密码认证的流程。 
2、理解spring Security Oauth2的工作流程。 
3、掌握资源服务集成spring Security框架完成Oauth2认证的流程。 
3.2 搭建认证服务器

3.2.1导入基础工程 
导入资料目录下的 xc-service-ucenter-auth工程,该工程是基于Spring Security Oauth2的一个二次封装的工程,导入此工程研究Oauth2认证流程。
3.2.2 创建数据库 
导入资料目录下的 xc_user.sql,创建用户数据库

 
“oauth_”开头的表都是spring Security 自带的表。 
本项目中spring Security 主要使用oauth_client_details表:
 

client_id:客户端id 
resource_ids:资源id(暂时不用) 
client_secret:客户端密码 
scope:范围 
access_token_validity:访问token的有效期(秒) 
refresh_token_validity:刷新token的有效期(秒) 
authorized_grant_type:授权类型,authorization_code,password,refresh_token,client_credentials

3.3 Oauth2授权码模式 
3.3.1 Oauth2授权模式 
Oauth2有以下授权模式: 
授权码模式(Authorization Code) 隐式授权模式(Implicit) 密码模式(Resource Owner PasswordCredentials) 客户端模式(Client Credentials
其中授权码模式和密码模式应用较多,本小节介绍授权码模式。 
3.3.2 授权码授权流程 
上边例举的黑马程序员网站使用微信认证的过程就是授权码模式,流程如下: 
1、客户端请求第三方授权 
2、用户(资源拥有者)同意给客户端授权 
3、客户端获取到授权码,请求认证服务器申请 
令牌 4、认证服务器向客户端响应令牌 
5、客户端请求资源服务器的资源,资源服务校验令牌合法性,完成授权 
6、资源服务器返回受保护资源 
3.3.2 申请授权码 
请求认证服务获取授权码: 
Get请求: 

localhost:40400/auth/oauth/authorize?
client_id=XcWebApp&response_type=code&scop=app&redirect_uri=http://localhost

参数列表如下: 
client_id:客户端id,和授权配置类中设置的客户端id一致。 
response_type:授权码模式固定为code 
scop:客户端范围,和授权配置类中设置的scop一致。 
redirect_uri:跳转uri,当授权码申请成功后会跳转到此地址,并在后边带上code参数(授权码)。 
首先跳转到登录页面:
 

输入账号和密码,点击Login。 
Spring Security接收到请求会调用UserDetailsService接口的loadUserByUsername方法查询用户正确的密码。 
当前导入的基础工程中将正确的密码硬编码为“123”,所以这里账号随意输入,密码输入123即可认证通过。 
接下来进入授权页面:
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值