前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第九节 OAuth2

第九节 OAuth2

作者头像
用户1418372
发布2018-09-13 10:20:32
4790
发布2018-09-13 10:20:32
举报
文章被收录于专栏:清晨我上码

本节讲解OAuth2 相关结合spring security来实现各个服务的权限控制

  1. OAuth2
  • 简单介绍下oauth2是什么,做什么,以及后续结合spring security去实现
  • 首先是什么? 它的定义我们可以在OAuth2的官网上可以看到
代码语言:javascript
复制
OAuth 2.0 is the industry-standard protocol for authorization. 
OAuth 2.0 supersedes the work done on the original OAuth protocol created in 2006. 
OAuth 2.0 focuses on client developer simplicity while providing specific authorization flows for web applications, desktop applications, mobile phones, and living room devices.

一句话概括下,OAuth 2.0是行业标准的授权协议。、

  • 然后它能做什么
  • 举个例子,当我们在第一次使用简书的时候,我们还没有注册,但是我们(懒)的注册就想要直接登陆进去怎么办呢?于是我们可以通过第三方(qq、微信、支付宝等)授权简书平台让我们登陆,如下图:

借助第三方登陆

上面就是我们比较直观的感受出它其实就是为了方便用户,为懒人服务

更详细的可参考阮一峰的一篇 或者 OAuth2官网

  • 如何实现呢 有一种具体的表现形式,就是token认证,下面两幅摘自官网上的OAuth 2.0 Framework - RFC 6749 ,名称含义如下:
代码语言:javascript
复制
1、 Third-party application:第三方应用程序,又称"客户端"(client),也就是例子中的"简书"。
2、HTTP service:HTTP服务提供商,简称"服务提供商",也就是例子中的微信、微博等
3、 Resource Owner:资源所有者,本文中又称"用户"(user)。
4、User Agent:用户代理,本文中就是指浏览器。
5、 Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。
6、Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。

可对照上面名称参考下面协议流程图以及刷新过期的访问令牌流程图:

代码语言:javascript
复制
  +--------+                               +---------------+
     |        |--(A)- Authorization Request ->|   Resource    |
     |        |                               |     Owner     |
     |        |<-(B)-- Authorization Grant ---|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(C)-- Authorization Grant -->| Authorization |
     | Client |                               |     Server    |
     |        |<-(D)----- Access Token -------|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(E)----- Access Token ------>|    Resource   |
     |        |                               |     Server    |
     |        |<-(F)--- Protected Resource ---|               |
     +--------+                               +---------------+

刷新过期的访问令牌流程图

代码语言:javascript
复制
 +--------+                                           +---------------+
  |        |--(A)------- Authorization Grant --------->|               |
  |        |                                           |               |
  |        |<-(B)----------- Access Token -------------|               |
  |        |               & Refresh Token             |               |
  |        |                                           |               |
  |        |                            +----------+   |               |
  |        |--(C)---- Access Token ---->|          |   |               |
  |        |                            |          |   |               |
  |        |<-(D)- Protected Resource --| Resource |   | Authorization |
  | Client |                            |  Server  |   |     Server    |
  |        |--(E)---- Access Token ---->|          |   |               |
  |        |                            |          |   |               |
  |        |<-(F)- Invalid Token Error -|          |   |               |
  |        |                            +----------+   |               |
  |        |                                           |               |
  |        |--(G)----------- Refresh Token ----------->|               |
  |        |                                           |               |
  |        |<-(H)----------- Access Token -------------|               |
  +--------+           & Optional Refresh Token        +---------------+

当然具体如何实现,用什么方式实现其实是无所谓,因为只要遵循上面定义的规则就可以。已经有很多造好的轮子了,我们拿过来用就好了,如果想要更深入的研究也可以自己尝试去造轮子。这里就使用spring security。关于shiro集成有空下次再说。

  1. spring 实现

spring boot 实现

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.09.02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本节讲解OAuth2 相关结合spring security来实现各个服务的权限控制
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档