开课吧孤尽T31训练营学习笔记-DAY19-OAuth2基础

169 阅读3分钟

OAuth2基础

OAuth2是一种授权机制,给终端用户提供一个临时的access_token来访问系统资源。

image.png

一、OAuth2的四种模式

1.1 授权码模式

最安全的模式,有一个二次验证的过程。

image.png

关键点在于第8步,京东网站会拿“授权码”去二次验证,如果是个合法的,QQ会返回access_token给京东服务器,进而返回给用户浏览器保存在storage中。

完成授权后,用户浏览器访问资源时,每次带着access_token。

1.2 简化模式

简化模式使用网站只有静态页面的场景。

由于没有服务器,不能由服务器去做二次验证,所以直接在第6步返回access_token。此时access_token是放在url fragment中返回的,一定程度上增加了安全性。

TODO: 还要探究一下fragment为什么比?参数形式要安全。

1.3 密码模式

密码模式适用于 京东网站和QQ合并后的场景,两家公司超级信任。

没有了第3/4/5步,京东网站直接提供一个登录QQ的页面,用户输入QQ密码,京东网站后台收到后拿着用户的QQ和密码去请求授权。

和授权码模式区别表面上的一点是登录页面的提供者不同。

1.4 客户端模式

客户端模式,使用于没有用户浏览器界面的,比如控制台。不过不需要提供用户的QQ和密码,而是给出客户端的id和密码。授权时针对客户端授权,而不是针对用户授权。

二、OAuth实战

服务器可以分为授权服务器和资源服务器。

2.1 授权服务器

基于Spring Cloud OAuth和Spring Cloud Security搭建授权服务器。

image.png

工程创建后,需要重点配置两个内容:OAuth相关策略和spring security原来的相关安全策略。

1. 配置客户端信息和授权

image.png

  1. 首先开启授权服务器功能。

  2. 配置客户端认证信息,客户端也可以存储在数据库表中,通过jdbc读取,这里的配置的client才可以被授权。

  3. 用户认证信息和token存储方式

  4. 开启一个服务端点(其实就是开启一个url /oauth/check_token),资源服务器会访问这个端点来验证token合法性。如果全部使用jwt token,则不需要再次验证token,则不需要开启这个服务端点。

2. 配置用户认证策略

这个配置的是用户认证策略,完全是spring security那一套东东。

image.png

2.2 资源服务器

基于Spring Cloud OAuth和Spring Cloud Security搭建资源服务器。

image.png

1. 配置token校验规则服务

配置了checkTokenEndpoint, 则拿到token后,授权去授权服务器校验token.

2. 配置资源访问规则

如图,设置了只有admin权限的用户才可以访问 /admin开头的url资源。

三、 总结

在实战中,还要使用jwt来减少token校验对授权服务器的验证压力。

另外,jwt如何及时失效的问题, 考虑由gateway将jwt token换成普通短token,然后将映射关系存储在jwt token中。