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是行业标准的授权协议。、
借助第三方登陆
上面就是我们比较直观的感受出它其实就是为了方便用户,为懒人服务
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集成有空下次再说。