Oauth2.0原理

Posted 架构师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oauth2.0原理相关的知识,希望对你有一定的参考价值。

架构师(JiaGouX)
我们都是架构师!


0x01.关于Oauth

Oauth是允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用的协议。

例如我们想要获取github的用户账号信息。

oauth2.0请求


进入到github就能看到,你授权的账号信息了。

Oauth2.0原理github授权账号信息





0x02.Oauth2.0成员

  • Resource Owner(资源拥有者:用户)

  • Client (第三方接入平台:请求者)

  • Resource Server (服务器资源:数据中心)

  • Authorization Server (认证服务器)


从成员看Oauth2.0基本流程。

Oauth2.0原理Oauth2.0基本流程


原理很简单,用户访问App,App访问Authorization Server请求权限,

Authorization Server得到用户同意后,返回token,

App通过这个token向Authorization Server索要数据,

App只能从Authorization Server这个中介获取服务器数据,而无法直接访问Resource Server。





0x03.Oauth2.0类型

关于Oauth使用情况

Oauth用权限大小可以分为:

  • 基础公开的API:站外网站,站外应用等

  • 基础公开的API+用户资料:站内应用,移动App,站外使用账号登录

  • 基础公开的API+用户所有权限:直接输入密码(Oauth1.0)


关于Oauth提权类型

  • authorization_code(Oauth提供的token代码): Web-server、apps

Oauth2.0原理authorization_code模式


  • implicit(简单模式):Browser-based apps,Mobile apps

Oauth2.0原理implicit模式


  • password(密码模式):Username/password access

  • client_credentials(客户端模式):Application access

其实第一种和第二中是一样的,都是用Oauth Server提供的token实现资源获取,只是获取的资源类型不一样,权限不一样。

authorization_code对应上面讲到得,获取基础公开API,

implicit对应第二种,获取用户信息。

password是种不安全的方式。

client_credentials是不需要Oauth认证的,即直接访问该网站提供的开放的API。


看看例子,从网上偷下来的facebook的Oauth2.0认证:

Oauth2.0原理facebook Oauth2.0

第一步:

App向 Oauth Server 请求的URL => https://facebook.com/dialog/oauth?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=REDIRECT_URI&scope=email

里面带着该app的id,key,请求的类型,返回一串的access_token和事件类型code。

第二步:

回调,跳转到权限确认页面等待用户确认授权 => https://facebook.com/dialog/oauth?response_type=code&client_id=28653682475872&redirect_uri=example.com&scope=email

该页面通过redirect_uri,回调到指定的callback页面。

第三步:

利用返回的access_token,将app的id和key以及code代码发包到:POST https://graph.facebook.com/oauth/access_token

这一步是为了获取token。

第四步:

Oauth Server返回token,这个时候,就可以通过token获取用户授权的资源了。





资料参考:

http://oauth.net/2/

https://www.digitalocean.com/community/tutorials/an-introduction-to-oauth-2


本文出自 夏日小草,转载请注明出处:http://homeway.me/2014/11/05/how-oauth2-work-1/

·END·

架构师

我们都是架构师!


架构师订阅号,关注获取更多技术分享

工作邮箱:admin@137x.com






以上是关于Oauth2.0原理的主要内容,如果未能解决你的问题,请参考以下文章

Oauth2.0认证原理

OAuth2.0实现原理

oauth2.0协议原理

OAuth2.0 原理流程及其单点登录和权限控制

OAuth2.0 授权的工作原理

OAuth2.0 原理简介