OAuth2.0详解(简介篇)

本博文,只是一个OAuth2.0引子。用于介绍OAuth的大致内容。
有关OAuth授权模式以及实现,我们将在之后的博文中进行描述。

(一)什么是Oauth2.0

首先,什么是Oauth?Oauth,即Open Authorization,是一种解决用户资源共享问题的协议。例如,我们可以使用微信身份登录某些APP,这样就无需进行花样繁多的注册。该协议使用授权的方式,在其他APP不触及用户名及密码的情况下,为用户提供服务,安全性更高。

到目前为止,OAuth共有两个版本,且两个版本并不兼容
OAuth Core1.0成型于2007年。
由于存在攻击漏洞,于2009年升级至OAuth Core1.0 Reversion A。
2010年,OAuth成为了RFC标准。
2010年,发布OAuth2.0版本,简化了授权流程。

更详细的OAuth介绍,可从官方网站https://oauth.net/获取。
OAuth1.0网址:https://oauth.net/1/
OAuth2.0网址:https://oauth.net/2/

(二)OAuth2.0中的角色

OAuth2.0有四个角色。

OAuth2.0详解(简介篇)_第1张图片

举个例子:
优酷APP登录界面,推荐使用其他账号登录。
我们以QQ身份登录。点击QQ,则跳转至授权界面(QQ登录界面)。
若QQ未登录,则需要输入账户/密码。
若QQ已登录,则只需点击登录,便可完成授权,直接登录优酷。

OAuth2.0详解(简介篇)_第2张图片

整个例子中,优酷为第三方APP,QQ为资源服务管理者和验证者。QQ即OAuth服务提供者。

(三)注册

若第三方APP想使用OAuth服务商的服务,需要到该服务商的OAuth平台进行注册。

注册时,需提供一些必要信息。但不同平台实现不同。通用注册信息有:
(1)APP类型。Native application, Web application (service), Application Base on Browser…
(2)APP跳转URIs。授权成功或失败后,将要跳转到的URI(或URI列表)。

注册完毕后,平台会为APP生成唯一的ID。该ID将在授权过程中使用。

(四)OAuth2.0的授权模式

关于授权模式,我们将用单独的篇幅总结,见OAuth2.0详解(授权模式篇)。
此处,我们仅列举出所有模式。

OAuth2.0有五种授权模式。
(1)授权码模式(Authorization Code)
(2)授权码简化模式(Implicit)
(3)Pwd模式(Resource Owner Password Credentials)
(4)Client模式(Client Credentials)
(5)扩展模式(Extension)

注:某些OAuth服务平台,需要在注册时,指定想使用的授权模式。例如okta平台。

(五)OAuth2.0的开源框架有哪些

OAuth是一个开放性协议(一个概念),有很多不同的实现。
OAuth官网提供了很多开发框架,分为服务器端和客户端。
可参见https://oauth.net/code/
我们仅关注java的部分。
其中服务器和客户端都支持的框架有三个:

Apache Oltu
Spring Security OAuth
Restlet Framework (draft 30)

个人推荐:Spring Security OAuth.
原因在于:Apache Oltu文档不完整,而Restlet偏重于讲述一种框架概念,其关于OAuth的资源也有限。

我们将在之后的博文中,将以Spring Security OAuth为例,逐一描述其服务器及客户端的实现。

你可能感兴趣的:(oauth2-0)