PHP实战iOS开发之常用技术点Spring 学习

OAuth学习整理

2018-11-16  本文已影响48人  codefine

近期把OAuth系统学习一下,并完成了授权码模式的PHP实现,此篇文章主要介绍OAuth相关知识,分享一些参考资料。

OAuth

OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。

系统角色

(1) Third-party application:第三方应用程序,本文中又称"客户端"(client),即上一节例子中的"云冲印"。

(2)HTTP service:HTTP服务提供商,本文中简称"服务提供商",即上一节例子中的Google。

(3)Resource Owner:资源所有者,本文中又称"用户"(user)。

(4)User Agent:用户代理,本文中就是指浏览器。

(5)Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。

(6)Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。

运行流程

运行流程

客户端的授权模式

客户端必须得到用户的授权(authorization grant),才能获得令牌(access token)。OAuth 2.0定义了四种授权方式。

如何选择适合的授权模式

授权模式选择 授权码模式

开发流程

  1. 搭建认证服务器(Authorization server)
GET /authorize?response_type=code&client_id=s6BhdRkqt3&state=xyz
        &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb HTTP/1.1

参数解释:

用户认证成功,重定向到 redirect_uri 网页,携带code

HTTP/1.1 302 Found
Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA
          &state=xyz

客户端像认证服务器换取 access_token

POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA
&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb

2.搭建资源服务器(Resource serve)

POST /api/user HTTP/1.1
Host: server.example.com
access_token=2YotnFZFEjr1zCsicMWpAA

注意事项

OAuth2的PHP类库

资料

上一篇下一篇

猜你喜欢

热点阅读