OAuth2

一、OAuth2概述

  • OAuth2是一个开放标准/开发协议,允许第三方应用访问该用户在某一网站存储的资源(头像、照片、视频)
  • 并且不需要将用户的账号和密码给第三方应用,而是通过token的方式实现访问,比如常见的qq登录、微博登录、github登录等
  • OAuth2是OAuth1.0协议下一版本,但是不兼容OAuth1.0
  • security 对OAuth2也是有非常好的支持,后面会介绍Spring Security OAuth2
  • OAuth2支持不同的授权模式,每种模式适用于不同的场景

二、OAuth2四种授权模式

1、四种授权模式概述

OAuth2有以下四种授权模式,每种授权模式应用于不同的互联网场景

  • 授权码模式
  • 简化模式
  • 密码模式
  • 客户端模式

四种授权模式的流程基本都一致的如下,只是个别步骤有所差异

OAuth2_第1张图片

A:客户端需要给用户授权

B:用户同意授权

C:客户端使用上面的授权向认证服务器获取令牌

D:认证服务器确认授权正确 下发令牌

E:客户端使用令牌访问认证服务器上的资源

F:资源服务器确认令牌正确,下发资源

2、授权码模式(重要)

常见的第三方登录(qq登录、github登录)基本都是用这种授权模式

这种也是使用最多、最完全、流程步骤最多的一种授权模式,流程如下

OAuth2_第2张图片

A:用户访问第三方应用,第三方应用通过浏览器访问认证服务器

B:用户选择是否授权

C:选择授权之后 ,认证服务器将用户导向客户端事先指定的重定向URL(redirection url),同时附上一个授权码

D:客户端收到授权码,附上上面的 重定向URL 向认证服务器申请令牌,此操作是在客户端的后端服务器完成,对用户不可见

E:认证服务器核对了授权码和重定向url之后,确认正确,下发访问令牌和更新令牌

3、简化模式

和授权码模式相比,跳过了用户授权(不需要用户授权了)直接在浏览器中想认证服务器申请令牌,令牌对访问者是可见的,且客户端不需要认证

流程如下

OAuth2_第3张图片

OAuth2_第4张图片

 注意:这种模式在spring security oatuh2是没有实现的

4、密码模式

用户向客户端提供自己的账户和密码,客户端用这些信息去认证服务器索要授权。通常是用户高度信任的客户端使用这种模式认证

OAuth2_第5张图片

5、客户端模式

用户将账号和密码给客户端,客户端拿着账户和密码去认证服务器进行认证,流程如下

OAuth2_第6张图片

参考教程

https://www.bilibili.com/video/BV1z44y1j7WZ

你可能感兴趣的:(#,spring,security,github)