标签:令牌 app doc 刷新 ack 安全 银行卡 之间 常用
转自:http://www.cftea.com/c/2016/11/6703.asp
OAuth 有几种模式,本文介绍最完善、最复杂、最常用的授权码模式(Authorization Code),也有人称授权码授权模式。
本文中只介绍原理,不介绍具体实现,因为各大公司在应用 OAuth 时均略有不同,所以在学习 OAuth 时没必要整那么细,了解原理后,再看看各大公司的文档,自然就明白其文档所讲的意思了。
先看流程图
解释一下
图中有三个红色的备注。
第一个红色备注参数解释如下:
第二个红色备注参数解释如下:
第三个红色备注参数解释如下:
code 相当于临时令牌,Access Token 相当于长期令牌(时间由授权服务器决定),那么为什么要用临时令牌换长期令牌呢?直接给长期令牌不好么?
(令牌,名字多高大上,但其实就是一个字符串,不过数据类型虽简单,但内容很有价值,就像银行卡密码。)
要说明的是用 code 换 Access Token 并不是通过用户代理(用户代理通常是浏览器),而是第三方应用的后台代码直接向授权服务器请求的(C# 中可用 WebRequest、WebClient),用户代理并不知道 Access Token 的值。这样做的好处是避免在用户代理上留下历史记录,也避免用户端中了木马后泄露 Access Token 值。
有了 Access Token 之后呢?
第三方应用可以做两类事:
传输安全
肯定得用 HTTPS,否则 Access Token 这种机密都被探听了(纵然没有经过用户代理,但能不保证第三方应用和授权服务器之间没人“偷听”)。
之前说过,各大公司在应用 OAuth 时有所不同,举点例呢?
我们在各大开放平台注册时,一般都有 app_id、app_secret,app_id 对应 client_id,app_secret 前面没有提,code 换 Access Token 时,有些公司要求参数中把 app_secret 也带上,有些公司却用签名(将 app_secret 混合在参数值中进行散列运算)的方式来实现。
有些就拿 Access Token 去资源服务器使用,有些却要求用 Access Token 换一个叫 Token 的东西,然后用 Token 去使用。
各大公司对参数名称的确定也不一定相同。
OAuth 白话简明教程-授权码模式(Authorization Code)
标签:令牌 app doc 刷新 ack 安全 银行卡 之间 常用
原文地址:http://www.cnblogs.com/Ceri/p/7673923.html