
day16 Spring Security Oauth2
文章平均质量分 56
feng_fly_28
这个作者很懒,什么都没留下…
展开
-
19-认证接口开发-接口开发-controller
4.3.7 登录url放行认证服务默认都要校验用户的身份信息,这里需要将登录url放行在WebSecurityConfig类中重写 configure(WebSecurity web)方法,如下:@Overridepublic void configure(WebSecurity web) throws Exception {web.ignoring().antMatchers("/userlogin");}4.3.8 测试认证接口使用postman测试:Post请求:http://l原创 2021-08-17 16:16:30 · 180 阅读 · 0 评论 -
18-认证接口开发-接口开发-service
4.3.4 Dao暂时使用静态数据,待用户登录调通再连接数据库校验用户信息。4.3.5 Service调用认证服务申请令牌,并将令牌存储到 redis。1、AuthToken创建 AuthToken模型类,存储申请的令牌,包括身份令牌、刷新令牌、jwt令牌身份令牌:用于校验用户是否认证刷新令牌:jwt令牌快过期时执行刷新令牌jwt令牌:用于授权@Data@ToString@NoArgsConstructorpublic class AuthToken {String access_原创 2021-08-17 11:54:22 · 122 阅读 · 0 评论 -
17-认证接口开发-申请令牌测试
4.3.3 配置参数在application.yml中配置参数auth:tokenValiditySeconds: 1200 #token存储到redis的过期时间clientId: XcWebAppclientSecret: XcWebAppcookieDomain: localhostcookieMaxAge: ‐1cookieMaxAge: -1 浏览器关闭,cookie就会失效。即cookie的过期时间4.3.4 申请令牌测试为了不破坏Spring Security的...原创 2021-08-11 17:56:50 · 212 阅读 · 0 评论 -
16-认证接口开发-Api接口定义
4.3 认证服务4.3.1 需求分析认证服务需要实现的功能如下:1、登录接口前端post提交账号、密码等,用户身份校验通过,生成令牌,并将令牌存储到redis。将令牌写入cookie。2、退出接口校验当前用户的身份为合法并且为已登录状态。将令牌从redis删除。删除cookie中的令牌。业务流程如下:4.3.2 Api接口@Api(value = "用户认证",description = "用户认证接口")public interface AuthControllerApi {原创 2021-08-11 17:17:47 · 168 阅读 · 0 评论 -
15-认证接口开发-Redis配置
4.2 Redis配置4.2.1 安装Redis1、安装Redis服务下载Windows版本的redis:https://github.com/MicrosoftArchive/redis/tags下载Redis-x64-3.2.100版本,解压Redis-x64-3.2.100.zip进入cmd命令行,进入Redis-x64-3.2.100目录。运行:redis‐server redis.windows.conf出现 下图说明 redis启动成功:注册为服务:redis‐serve原创 2021-08-11 16:50:06 · 139 阅读 · 0 评论 -
14-认证接口开发-需求分析
4 认证接口开发4.1 需求分析用户登录的流程图如下:access_token是jwt令牌,里面放的是权限信息,用户身份信息等都在这里放着。我会把jwt令牌存到redis。jti是用户身份令牌。是用户和jwt令牌对应的一个简短的小令牌。我会把用户身份令牌,存到cookie。jwt令牌太长,cookie的容量是有限的,所以存在redis。当前端访问资源的前端页面时,携带的是用户身份的短令牌,访问网关,网关去拿着这个短令牌,去redis里去拿到jwt长令牌,然后拿着这个令牌去校验用户信息,因为长原创 2021-08-11 16:16:18 · 214 阅读 · 0 评论 -
13-SpringSecurityOauth2研究-JWT研究-生成JWT令牌&验证JWT令牌
3.6.3.2 生成jwt令牌在认证工程创建测试类,测试jwt令牌的生成与验证。//生成一个jwt令牌@Testpublic void testCreateJwt(){//证书文件String key_location = "xc.keystore";//密钥库密码String keystore_password = "xuechengkeystore";//访问证书路径ClassPathResource resource = new ClassPathResource(key_loca原创 2021-08-11 15:24:22 · 223 阅读 · 0 评论 -
12-SpringSecurityOauth2研究-JWT研究-生成私钥和公钥
3.6.3 JWT入门Spring Security 提供对JWT的支持,本节我们使用Spring Security 提供的JwtHelper来创建JWT令牌,校验JWT令牌等操作。3.6.3.1 生成私钥和公钥JWT令牌生成采用非对称加密算法1、生成密钥证书下边命令生成密钥证书,采用RSA 算法每个证书包含公钥和私钥keytool -genkeypair -alias xckey -keyalg RSA -keypass xuecheng -keystore xc.keystore -sto原创 2021-08-11 11:31:41 · 918 阅读 · 0 评论 -
11-SpringSecurityOauth2研究-JWT研究-JWT介绍
3.6 JWT研究3.6.1 JWT介绍在介绍JWT之前先看一下传统校验令牌的方法,如下图:问题:传统授权方法的问题是用户每次请求资源服务,资源服务都需要携带令牌访问认证服务去校验令牌的合法性,并根据令牌获取用户的相关信息,性能低下。解决:使用JWT的思路是,用户认证通过会得到一个JWT令牌,JWT令牌中已经包括了用户相关的信息,客户端只需要携带JWT访问资源服务,资源服务根据事先约定的算法自行完成令牌校验,无需每次都请求认证服务完成授权。JWT令牌授权过程如下图:什么是JWT?J原创 2021-08-06 17:48:01 · 303 阅读 · 0 评论 -
10-SpringSecurityOauth2研究-校验令牌&刷新令牌
3.5校验令牌Spring Security Oauth2提供校验令牌的端点,如下:Get: http://localhost:40400/auth/oauth/check_token?token=参数:token:令牌使用postman测试如下:exp:过期时间,long类型,距离1970年的秒数(new Date().getTime()可得到当前时间距离1970年的毫秒数)。user_name: 用户名client_id:客户端Id,在oauth_client_details中配置原创 2021-08-06 17:07:17 · 1099 阅读 · 0 评论 -
09-SpringSecurityOauth2研究-Oauth2密码模式授权
3.4 Oauth2密码模式授权密码模式(Resource Owner Password Credentials)与授权码模式的区别是申请令牌不再使用授权码,而是直接通过用户名和密码即可申请令牌。测试如下:Post请求:http://localhost:40400/auth/oauth/token参数:grant_type:密码模式授权填写passwordusername:账号password:密码并且此链接需要使用 http Basic认证。当访问的时候,会调用下边的类会调用原创 2021-08-06 16:21:50 · 250 阅读 · 0 评论 -
08-SpringSecurityOauth2研究-解决swagger-ui无法访问
3.3.4.4 解决swagger-ui无法访问当课程管理加了授权之后再访问swagger-ui则报错:修改授权配置类ResourceServerConfig的configure方法:针对swagger-ui的请求路径进行放行://Http安全配置,对每个到达系统的http请求链接进行校验@Overridepublic void configure(HttpSecurity http) throws Exception {//所有请求必须认证通过http.authorizeRequests原创 2021-08-06 15:45:30 · 1204 阅读 · 0 评论 -
07-SpringSecurityOauth2研究-Oauth2授权码模式-资源服务授权测试
3.3.4 资源服务授权3.3.4.1 资源服务授权流程资源服务拥有要访问的受保护资源,客户端携带令牌访问资源服务,如果令牌合法则可成功访问资源服务中的资源,如下图:上图的业务流程如下:1、客户端请求认证服务申请令牌2、认证服务生成令牌认证服务采用非对称加密算法,使用私钥生成令牌。3、客户端携带令牌访问资源服务客户端在Http header 中添加: Authorization:Bearer 令牌。4、资源服务请求认证服务校验令牌的有效性资源服务接收到令牌,使用公钥校验令牌的合法性。原创 2021-08-06 15:36:08 · 158 阅读 · 0 评论 -
06-SpringSecurityOauth2研究-Oauth2授权码模式-申请令牌
3.3 Oauth2授权码模式3.3.1 Oauth2授权模式Oauth2有以下授权模式:授权码模式(Authorization Code) 隐式授权模式(Implicit) 密码模式(Resource Owner PasswordCredentials) 客户端模式(Client Credentials)其中授权码模式和密码模式应用较多,本小节介绍授权码模式。3.3.2 授权码授权流程上边例举的黑马程序员网站使用微信认证的过程就是授权码模式,流程如下:1、客户端请求第三方授权2、用户(资原创 2021-08-05 17:04:47 · 702 阅读 · 2 评论 -
05-SpringSecurityOauth2研究-搭建认证服务器
3 Spring Security Oauth2研究3.1 目标本项目认证服务基于Spring Security Oauth2进行构建,并在其基础上作了一些扩展,采用JWT令牌机制,并自定义了用户身份信息的内容。 本教程的主要目标是学习在项目中集成Spring Security Oauth2的方法和流程,通过spring Security Oauth2的研究需要达到以下目标:1、理解Oauth2的授权码认证流程及密码认证的流程。2、理解spring Security Oauth2的工作流程。3原创 2021-08-05 10:24:37 · 365 阅读 · 0 评论 -
04-用户认证技术方案-SpringSecurityOauth2
2.3 Spring security Oauth2认证解决方案本项目采用 Spring security + Oauth2完成用户认证及用户授权,Spring security 是一个强大的和高度可定制的身份验证和访问控制框架,Spring security 框架集成了Oauth2协议,下图是项目认证架构图:1、用户请求认证服务完成认证。2、认证服务下发用户身份令牌,拥有身份令牌表示身份合法。3、用户携带令牌请求资源服务,请求资源服务必先经过网关。4、网关校验用户身份令牌的合法,不合法表示用原创 2021-08-05 10:08:38 · 117 阅读 · 0 评论 -
03-用户认证技术方案-Oauth2协议
2.2 Oauth2认证2.2.1 Oauth2认证流程第三方认证技术方案最主要是解决认证协议的通用标准 问题,因为要实现 跨系统认证,各系统之间要遵循一定的接口协议。OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP、JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的原创 2021-08-05 09:36:37 · 307 阅读 · 0 评论 -
02-用户认证技术方案-单点登录
2 用户认证技术方案2.1 单点登录技术方案分布式系统要实现单点登录,通常将认证系统独立抽取出来,并且将用户身份信息存储在单独的存储介质,比如:MySQL、Redis,考虑性能要求,通常存储在Redis中,如下图:单点登录的特点是:1、认证系统为独立的系统。2、各子系统通过Http或其它协议与认证系统通信,完成用户认证。3、用户身份信息存储在Redis集群。Java中有很多用户认证的框架都可以实现单点登录:1、Apache Shiro.2、CAS3、Spring security C原创 2021-08-05 09:27:35 · 170 阅读 · 0 评论 -
01-用户认证需求分析
1 用户认证需求分析1.1 用户认证与授权截至目前,项目已经完成了在线学习功能,用户通过在线学习页面点播视频进行学习。如何去记录学生的学习过程呢?要想掌握学生的学习情况就需要知道用户的身份信息,记录哪个用户在什么时间学习什么课程;如果用户要购买课程也需要知道用户的身份信息。所以,去管理学生的学习过程最基本的要实现用户的身份认证。什么是用户身份认证?用户身份认证即用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问。常见的用户身份认证表现形式有:用户名密码登录,指纹打卡等方式。原创 2021-08-05 09:17:38 · 586 阅读 · 0 评论