微服务架构和实践javaOauth2

第九节 OAuth2,以及本微服务项目相关实现定义

2018-09-02  本文已影响5人  勃列日涅夫

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

  1. OAuth2
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是行业标准的授权协议。、

借助第三方登陆

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

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

1、 Third-party application:第三方应用程序,又称"客户端"(client),也就是例子中的"简书"。
2、HTTP service:HTTP服务提供商,简称"服务提供商",也就是例子中的微信、微博等
3、 Resource Owner:资源所有者,本文中又称"用户"(user)。
4、User Agent:用户代理,本文中就是指浏览器。
5、 Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。
6、Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。

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

  +--------+                               +---------------+
     |        |--(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 ---|               |
     +--------+                               +---------------+

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

 +--------+                                           +---------------+
  |        |--(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. 为方便项目中实例定义如下
图片.png

*** 至于具体url定义和请求参数、响应参数定义可参考网上给出的规定 ***

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=39uu4gitu2wwc

上一篇下一篇

猜你喜欢

热点阅读