Internet Engineering Task Force (IETF) D. Hardt, Ed.
Request for Comments: 6749 Microsoft
Obsoletes: 5849 October 2012
Category: Standards Track
ISSN: 2070-1721
OAuth 2.0授权框架
文摘
在RFC 5849。
这份备忘录的地位
这是一个互联网标准跟踪文档。
因特网标准可在RFC 5741的第2部分。
http://www.rfc-editor.org/info/rfc6749。
版权声明
文档的作者。 保留所有权利。
描述的简化的BSD许可。
(第1页)
表的内容
4.5。 扩展授予.......................................... 42
(第2页)
12.2。 信息参考................................... 70
(第3页)
附录c .确认...................................... 75
1。 介绍
第三方。 这就产生了一些问题和局限性:
以明文。
固有的安全漏洞的密码。
资源。
改变第三方的密码。
(第4页)
密码。
所有者。
主持资源服务器访问受保护的资源。
特定的凭证(访问令牌)。
使用OAuth对HTTP的范围以外的任何协议。
它的结构和细节。
(第5页)
1.1。 角色
OAuth定义了四个角色:
终端用户。
和应对使用访问受保护的资源请求令牌。
设备)。
验证资源所有者和获得授权。
多个资源服务器。
(第6页)
1.2。 协议流
+ - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - +
图1:抽象的协议流程
四个角色之间的交互,包括以下步骤:
服务器作为中介。
授权服务器。
授权服务器和授权授予。
授权批准,如果有效,问题一个访问令牌。
(第7页)
服务器进行身份验证和访问令牌。
服务请求。
图3在4.1节。
1.3。 授权批准
机制来定义额外的类型。
1.3.1。 授权代码
资源所有者回到客户端授权代码。
主人的凭证没有与客户共享。
暴露在其他人,包括资源所有者。
1.3.2。 隐式的
一个授权代码,直接客户端发出一个访问令牌
[8]页
代码)发行(后来用于获得一个访问令牌)。
资源所有者的用户代理。
授权代码授予类型是可用的。
1.3.3。 资源所有者密码凭据
(如授权代码)。
凭证与长寿的访问令牌和刷新令牌。
1.3.4。 客户端凭证
授权服务器。
(第9页)
1.4。 访问令牌
服务器。
客户端使用一个令牌。
了解各种身份验证方法。
[RFC6750]。
1.5。 刷新令牌
图1)。
客户端。 令牌代表一个标识符用于检索
(第10页)
资源服务器。
+ - - - - - - - - - - + &可选刷新令牌+ - - - - - - - - - - - - - - - - - - +
图2:刷新过期访问令牌
流程如图2所示,包括以下步骤:
授权服务器和授权授予。
和一个刷新令牌。
服务器访问令牌。
服务请求。
否则,它使另一个受保护的资源请求。
一个无效的标记错误。
(11页)
和授权服务器上的政策。
可选地,一个新的刷新令牌)。
规范,第7节中描述。
1.6。 TLS版本
部署版本和将提供最广泛的互操作性。
机制,满足安全需求。
1.7。 HTTP重定向
允许,被认为是一个实现细节。
1.8。 互操作性
实现。
授权服务器功能,端点发现)。 没有
(第12页)
服务器以进行互操作。
实现完全的网络级的互操作性。
1.9。 符号约定
规范中描述将被解释为[RFC2119]。
[RFC3986]。
“签名”、“信任”、“验证”和“确认”。
是大小写敏感的。
2。 客户端注册
注册表单。
可信的渠道。
(13页)
当注册客户端,客户端开发者应当:
o指定客户端类型如2.1节所述,
和
接受法律条款)。
2.1。 客户端类型
维护客户的保密资质):
客户端身份验证使用其他手段。
身份验证通过其他手段。
对客户端类型做出假设。
每个组件注册为一个单独的客户端。
(14页)
配置文件:
不接触或访问资源所有者。
当请求授权用户代理功能。
设备。
2.2。 客户机标识符
授权服务器。
任何标识符的问题。
(第15页)
2.3。 客户端身份验证
安全需求。
服务器(如。 、密码、公共/私有密钥对)。
客户端。
请求。
2.3.1。 客户密码
客户密码。
例如(断行仅用于显示目的):
授权:基本czZCaGRSa3F0Mzo3RmpmcDBaQnIxS3REUmJuZlZkbUl3
参数:
由2.2节描述的注册过程。
参数如果客户机的秘密是一个空字符串。
(16页)
请求URI。
只):
内容类型:应用程序/ x-www-form-urlencoded
client_id = s6BhdRkqt3&client_secret = 7 fjfp0zbr1ktdrbnfvdmiw
1.6节在发送请求时使用密码身份验证。
蛮力攻击。
2.3.2。 其他身份验证方法
身份验证方案。
2.4。 未注册客户
其互操作性的影响。
(第17页)
3所示。 协议的端点
(HTTP资源):
从资源所有者通过授权用户代理重定向。
授予访问令牌,通常与客户端身份验证。
以及一个客户机端点:
资源所有者的用户代理。
根据需要扩展授予类型可以定义额外的端点。
3.1。 授权端点
本规范的范围。
但位置通常提供的服务文档。
端点URI必须不包括组件的一个片段。
授权端点。
使用“POST”方法。
(18页)
不能包含不止一次。
3.1.1。 响应类型
参数:
8.4节。
响应类型是由各自的规范定义的。
必须返回一个错误响应4.1.2.1节中描述。
3.1.2。 重定向端点
授权请求。
片段组件。
(19页)
3.1.2.1。 端点的请求保密
请求)。
登录服务)。
3.1.2.2。 注册要求
注册他们的重定向端点:
o公共客户。
o机密客户利用隐式授予类型。
重定向端点之前利用授权端点。
授权)。
重定向的端点。
在10.15节描述。
(第20页)
3.1.2.3。 动态配置
授权请求使用“redirect_uri”请求参数。
使用简单的字符串比较[RFC3986]部分中定义6.2.1。
3.1.2.4。 无效的端点
自动重定向用户代理无效的重定向的URI。
3.1.2.5。 端点的内容
访问重定向URI和它所包含的凭证。
先执行。
3.2。 令牌端点
隐式授予类型(因为一个访问令牌直接发布)。
(21页)
通常提供的服务文档。
端点URI必须不包括组件的一个片段。
1.6节当发送请求令牌端点。
请求。
不能包含不止一次。
3.2.1之上。 客户端身份验证
身份验证用于:
没有注册。
刷新令牌。
的客户端凭据明显更容易。
(22页)
受保护的资源)。
3.3。 访问令牌的范围
通知客户端访问令牌的范围。
额外的访问请求的范围。
scope-token = 1 *(% x21 / % x23-5B / % x5D-7E)
客户的实际范围。
文档范围需求和默认值(如果定义)。
4所示。 获得授权
提供了一个扩展机制来定义额外的资助类型。
(23页)
4.1。 授权代码授予
从授权服务器。
+ - - - - - - - - - - - - +(w /可选的刷新令牌)
通过用户代理两部分。
图3:授权代码流
(24页)
流程如图3所示包括以下步骤:
用户代理回访问授予(或拒绝)。
允许或拒绝客户的访问请求。
早些时候。
代码验证。
可选地,一个访问令牌和刷新令牌。
以下4.4.1。 授权请求
使用“应用程序/ x-www-form-urlencoded”格式,每个附录B:
必需的。 值必须设置为“代码”。
必需的。 如2.2节所述客户端标识符。
可选的。 3.1.2节中描述。
(25页)
3.3节。
跨站点请求伪造如10.12节所述。
用户代理。
只):
主持人:server.example.com
建立审批通过其他方式)。
用户代理。
4.1.2。 授权响应
每一附录B:
推荐。 客户端不能使用授权代码
(26页)
客户端标识符和重定向的URI。
客户端。
发送以下HTTP响应:
状态= xyz
任何价值的问题。
4.1.2.1。 错误响应
无效的重定向的URI。
“应用程序/ x-www-form-urlencoded”格式,每个附录B:
后:
一次,或者畸形。
(27页)
使用这种方法的代码。
请求。
授权代码使用这个方法。
所请求的范围是无效的,未知的,或畸形。
通过一个HTTP重定向)。
客户端通过一个HTTP重定向)。
外设置% x20-21 / % x23-5B / % x5D-7E。
以外的字符% x20-21 / % x23-5B / % x5D-7E设置。
外设置% x21 / % x23-5B / % x5D-7E。
(28页)
客户端。
发送以下HTTP响应:
地点:https://client.example.com/cb?error=access_denied&state=xyz
4.1.3。 访问令牌的请求
请求实体:
必需的。 值必须设置为“authorization_code”。
授权服务器。
值必须是相同的。
授权服务器3.2.1节中描述。
3.2.1节中。
(第29页)
(断行仅用于显示目的):
内容类型:应用程序/ x-www-form-urlencoded
&redirect_uri 3 = https % % 2 f % 2 fclient % % 2易康姆% 2巴萨2典范
授权服务器必须:
身份验证需求),
o验证客户端如果包含客户机身份验证,
代码发布“client_id”要求,
o确认授权代码是有效的,
他们的价值观是相同的。
4.1.4。 访问令牌的反应
一个错误的反应如5.2节所述。
(30页)
一个例子成功的响应:
编译指示:no - cache
}
4.2。 隐式授予
比如JavaScript。
从授权服务器。
请求。
应用程序驻留在相同的设备。
(31页)
+ - - - - - - - - - - - - +
部分,因为他们通过用户代理。
图4:隐式授予流
(第32页)
流程如图4所示,包括以下步骤:
用户代理回访问授予(或拒绝)。
允许或拒绝客户的访问请求。
URI访问令牌的片段。
片段在本地信息。
片段中包含的参数)。
客户端在本地资源,提取访问令牌。
(G)的用户代理将访问令牌传递给客户端。
当使用隐式授予。
4.2.1。准备 授权请求
使用“应用程序/ x-www-form-urlencoded”格式,每个附录B:
必需的。 值必须设置为“令牌”。
必需的。 如2.2节所述客户端标识符。
(第33页)
可选的。 3.1.2节中描述。
3.3节。
跨站点请求伪造如10.12节所述。
用户代理。
只):
主持人:server.example.com
3.1.2中所描述的部分。
资源所有者或通过建立审批通过其他方式)。
用户代理。
(34页)
4.2.2。 访问令牌的反应
附录B:
必需的。 访问令牌授权发布的服务器。
7.1节。 值是不区分大小写。
过期时间通过其他方式或文档的默认值。
由3.3节描述。
客户端。
授权服务器不能刷新令牌。
仅显示目的):
状态= xyz&token_type = example&expires_in = 3600
行动与重定向的URI。
(35页)
授权服务器应该文档的任何值的大小问题。
4.2.2.1。 错误响应
无效的重定向的URI。
“应用程序/ x-www-form-urlencoded”格式,每个附录B:
后:
一次,或者畸形。
使用这种方法。
请求。
访问令牌使用这种方法。
所请求的范围是无效的,未知的,或畸形。
(第36页)
通过一个HTTP重定向)。
客户端通过一个HTTP重定向)。
外设置% x20-21 / % x23-5B / % x5D-7E。
以外的字符% x20-21 / % x23-5B / % x5D-7E设置。
外设置% x21 / % x23-5B / % x5D-7E。
客户端。
发送以下HTTP响应:
地点:https://client.example.com/cb错误= access_denied&state = xyz
4.3。 资源所有者密码凭据
客户端,如设备操作系统或一个高度特权
(37页)
可行的。
访问令牌。
+ - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - +
图5:资源所有者凭证流密码
流程如图5所示包括以下步骤:
密码。
认证与授权服务器。
令牌。
(38页)
4.3.1。 授权请求和响应
必须抛弃凭证一旦获得一个访问令牌。
4.3.2。 访问令牌的请求
请求实体:
必需的。 值必须设置为“密码”。
必需的。 资源所有者的用户名。
必需的。 资源所有者密码。
3.3节。
3.2.1节中。
只):
内容类型:应用程序/ x-www-form-urlencoded
grant_type =密码和用户名= johndoe&password = A3ddj3w
(39页)
授权服务器必须:
身份验证需求),
o验证客户端如果包含客户机身份验证,和
现有的密码验证算法。
警报)。
4.3.3。 访问令牌的反应
错误响应如5.2节所述。
一个例子成功的响应:
编译指示:no - cache
}
4.4。 客户端证书授予
本规范的范围)。
(40页)
客户。
+ - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - +
图6:客户端凭证流
流程如图6所示包括以下步骤:
请求一个访问令牌从牌端点。
问题一个访问令牌。
4.1.1。 授权请求和响应
不需要额外的授权请求。
10/24/11。 访问令牌的请求
请求实体:
必需的。 值必须设置为“client_credentials”。
3.3节。
3.2.1节中描述。
(41页)
只):
内容类型:应用程序/ x-www-form-urlencoded
grant_type = client_credentials
授权服务器必须对客户端进行身份验证。
4.4.3。 访问令牌的反应
返回一个错误响应如5.2节所述。
一个例子成功的响应:
编译指示:no - cache
}
4.5。 扩展授予
添加任何必要的附加参数。
(42页)
TLS(断行仅用于显示目的):
内容类型:应用程序/ x-www-form-urlencoded
[… 为了简便起见,我们省略了…]aG5TdGF0ZW1lbnQ-PC9Bc3NlcnRpb24 -
错误响应如5.2节所述。
5。 发行一个访问令牌
错误响应如5.2节所述。
5.1。 成功的响应
实体的HTTP响应200(OK)状态码:
必需的。 访问令牌授权发布的服务器。
7.1节。 值是不区分大小写。
过期时间通过其他方式或文档的默认值。
(43页)
在第六节。
由3.3节描述。
参数不重要,可以有所不同。
用一个“no - cache”的价值。
例如:
编译指示:no - cache
}
文档的任何值的大小问题。
(44页)
5.2。 错误响应
参数与响应:
后:
客户端,或者另有畸形。
匹配的客户端所使用的身份验证方案。
另一个客户端。
授权批准的类型。
授权服务器。
(第45页)
超过了资源所有者授予的范围。
外设置% x20-21 / % x23-5B / % x5D-7E。
以外的字符% x20-21 / % x23-5B / % x5D-7E设置。
外设置% x21 / % x23-5B / % x5D-7E。
有所不同。
例如:
编译指示:no - cache
}
(46页)
6。 刷新一个访问令牌
请求实体:
必需的。 值必须设置为“refresh_token”。
必需的。 刷新令牌发给客户端。
资源所有者。
授权服务器3.2.1节中描述。
只):
内容类型:应用程序/ x-www-form-urlencoded
grant_type = refresh_token&refresh_token = tGzv3JOkF0XG5Qx2TlKWIA
(47页)
授权服务器必须:
身份验证需求),
客户端,
o确认刷新令牌。
如5.2节所述的反应。
请求。
7所示。 访问受保护的资源
授权服务器。
使用令牌类型,如[RFC6750]。
(48页)
7.1。 访问令牌类型
类型。
通过简单地包括访问令牌请求字符串:
授权:无记名mf_9.b5f jqm——4.1
请求:
规范使用前。
包括访问令牌时请求受保护的资源。
7.2。 错误响应
OAuth令牌的身份验证方案。
注册在注册表误差建立了此规范。
(49页)
参数,参数名称应该是“错误”。
注册表值以同样的方式。
规范。
8。 可扩展性
8.1。 定义访问令牌类型
11.1节),或者通过使用一个独特的绝对URI作为它的名字。
使用。
“例子”是留给在例子中使用。
name-char =“-”/”。 “/”_”/数字/α
8.2。 定义新的端点参数
OAuth参数注册程序后在11.2节。
现有的参数的语法)。
name-char =“-”/”。 “/”_”/数字/α
(50页)
(如其他注册值。 ,开始“companyname_”)。
8.3。 定义新的授权授予类型
由11.2节。
8.4。 定义新的授权端点响应类型
名称必须符合响应类型ABNF。
涵盖所有其他安排相同的值。
表示相同的反应类型。
8.5。 定义额外的错误代码
定义的。
(51页)
可以注册。
名为“example_invalid”。
error-char = % x20-21 / % x23-5B / % x5D-7E
9。 本机应用程序
体验。
例如:
响应本机应用程序可用。
访问用户代理的cookie存储。
应该考虑以下几点:
提供了一个熟悉的终端用户体验和功能。 的
(52页)
设备的读者)。
需要切换上下文和打开新的窗口。
执行)。
代码授予类型,应考虑如下:
应用程序无法客户机凭据保密。
访问令牌到期。
10。 安全注意事项
user-agent-based应用程序和本地应用程序。
[OAuth-THREATMODEL]。
10.1。 客户端身份验证
凭证。
(53页)
特定的设备。
获取资源所有者授权。
发出这样的客户。
10.2。 客户端模拟
无法,保持其客户端凭据保密。
识别客户端和它的起源。
当前客户端和授权或拒绝请求。
不是一个冒名顶替者。
(54页)
10.3。 访问令牌
[RFC2818]。
URI的片段,可以使未经授权的聚会。
未经授权的聚会。
问题一个权利小于请求的访问令牌。
由授权服务器客户端发布到客户端。
10.4。 刷新令牌
客户和本地应用程序客户端。
[RFC2818]。
令牌滥用。
令牌刷新响应。 前刷新令牌失效
(55页)
令牌,通知授权服务器的漏洞。
未经授权的聚会。
10.5。 授权码
引用头文件。
客户重定向端点必须需要使用TLS。
妥协授权代码。
发布相同的客户端。
10.6。 授权代码重定向URI操纵
攻击者授权代码。
授权合法的客户端提供的URI和替换
(56页)
操作链接授权访问合法的客户端。
受害者(通过客户端)。
注册的价值。
10.7。 资源所有者密码凭据
暴露高度特权凭证给客户端。
其他由客户记录)。
通过这种格兰特一生发行的访问令牌。
类型和尽可能地利用其他资助类型。
(57页)
10.8。 要求保密
代码不应该传播的清晰。
不安全的通道上传输或存储上缺乏自信。
10.9。 确保端点真实性
服务器身份验证的要求。
10.10。 Credentials-Guessing攻击
密码,和客户端凭据。
或等于2 ^(-128)和应小于或等于2 ^(-160)。
凭证供终端用户使用。
10.11。 网络钓鱼攻击
实践窃取资源所有者的密码。
授权服务器。
(58页)
交互。
10.12。 跨站点请求伪造
存在一个有效的会话cookie)。
攻击者控制的)。
授权服务器时授权请求。
同源策略)。
一个恶意的客户没有涉及或报警终端用户。
资源所有者。
(59页)
10.13。 “点击劫持”
给予客户访问终端用户不知情的情况下。
技术可以使用但可能不是有效的在所有的浏览器。
10.14。 代码注入和输入验证
服务或引入一个广泛的恶意的副作用。
“状态”和“redirect_uri”参数。
10.15。 开放的转向器
参数值没有任何验证。
重定向的URI,攻击者可以使用一个开放的转向器由
(60页)
或访问令牌端点攻击者的控制下。
流
令牌了。
合法的公共端。
攻击者。
令牌。
容易受到这种类型的攻击。
授予访问令牌或授权代码。
限制访问令牌)。
(61页)
11。 IANA的考虑
11.1。 OAuth访问令牌类型注册表
本规范建立了OAuth访问令牌类型注册表。
出版了。
(如。 ”,请求访问令牌类型:榜样”)。
成功的。
列表。
11.1.1。 注册模板
请求的名称(如。 “示例”)。
11.2节。
这一类型。
电子邮件地址,主页URI)也可能包括在内。
(62页)
被包括但不是必需的。
11.2。 OAuth参数注册表
本规范建立了OAuth注册表参数。
出版了。
(如。 请求参数:示例”)。
成功的。
列表。
11.2.1。 注册模板
请求的名称(如。 “示例”)。
请求,或令牌响应。
电子邮件地址,主页URI)也可能包括在内。
(63页)
被包括但不是必需的。
11.2.2。 初始注册表内容
OAuth注册表参数的初始内容有:
o规范文档(s):RFC 6749
o规范文档(s):RFC 6749
o规范文档(s):RFC 6749
o规范文档(s):RFC 6749
o规范文档(s):RFC 6749
o规范文档(s):RFC 6749
o规范文档(s):RFC 6749
(64页)
o规范文档(s):RFC 6749
o规范文档(s):RFC 6749
o规范文档(s):RFC 6749
o规范文档(s):RFC 6749
o规范文档(s):RFC 6749
o规范文档(s):RFC 6749
o规范文档(s):RFC 6749
o规范文档(s):RFC 6749
o规范文档(s):RFC 6749
(65页)
11.3。 OAuth授权端点响应类型注册表
响应类型注册表。
规范将发表。
(如。 “请求响应类型:榜样”)。
成功的。
列表。
11.3.1。 注册模板
请求的名称(如。 “示例”)。
电子邮件地址,主页URI)也可能包括在内。
包括但不是必需的。
(66页)
11.3.2。 初始注册表内容
内容是:
o规范文档(s):RFC 6749
o规范文档(s):RFC 6749
11.4。 OAuth扩展注册表错误
本规范建立了OAuth扩展注册表错误。
满足这样的规范将发表。
(如。 错误代码:请求示例”)。
成功的。
列表。
(67页)
11.4.1。 注册模板
% x5D-7E。
访问错误响应(7.2节)。
与。
电子邮件地址,主页URI)也可能包括在内。
被包括但不是必需的。
12。 引用
12.1。 引用标准
RFC 2119要求的水平”,BCP 14日,1997年3月。
RFC 2246,1999年1月。
传输协议——HTTP / 1.1”,RFC 2616,1999年6月。
RFC 2617,2617年6月。
(68页)
RFC2818 Rescorla,E。 “HTTP / TLS”,RFC 2818,2818年5月。
ISO 10646“,10646年性病,RFC 3629,2003年11月。
RFC 3986,2005年1月。
JavaScript对象表示法(JSON) ”,RFC 4627,2006年7月。
RFC 4949,4949年8月。
2008年5月。
规格:ABNF”,68年性病,RFC 5234,2008年1月。
1.2”(TLS)协议版本,RFC 5246,2008年8月。
安全性(transport layer Security,TLS) ”,RFC 6125,2011年3月。
交换”,ANSI X3.4,1986。
< http://www.w3.org/tr/1999/rec - html401 http://www.w3.org/tr/1999/rec >。
< http://www.w3.org/tr/2008/rec - xml - 20081126 >。
(69页)
12.2。 有益的参考
身份验证”,正在进行的工作,2012年2月。
OAuth 2.0概要”,正在进行的工作,2012年9月。
在进步,2012年10月。
2010年1月。
2010年4月。
框架:不记名使用令牌”,RFC 6750,2012年10月。
(70页)
附录a .增强Backus-Naur形式(ABNF)语法
在utf - 8编码。 元素的顺序提出了第一个定义。
定义从[RFC3986]。
的一些定义遵循使用这些常见的定义:
% xE000-FFFD / % x10000-10FFFF
返回和换行字符。)
. 1。 “client_id”语法
2.3.1节中定义的“client_id”元素是:
客户机id = * VSCHAR
由信用证。 “client_secret”语法
2.3.1节中定义的“client_secret”元素是:
端秘密= * VSCHAR
出具。 “response_type”语法
3.1.1“response_type”元素中定义部分和8.4:
(71页)
各。 “范围”语法
3.3节中定义的“范围”元素是:
scope-token = 1 * NQCHAR
本。 “状态”的语法
4.2.1,准备4.2.2,4.2.2.1:
= 1 * VSCHAR状态
要求寄出。 “redirect_uri”语法
和4.2.1:准备
redirect-uri = uri引用
A.7。 “错误”的语法
7.2和8.5:
= 1 * NQSCHAR错误
如系。 “error_description”语法
4.2.2.1、5.2和7.2:
错误描述= 1 * NQSCHAR
A.9。 “error_uri”语法
和7.2:
error-uri = uri引用
(72页)
A.10。 “grant_type”语法
4.5,6:
name-char =“-”/”。 “/”_”/数字/α
A.11。 “代码”语法
4.1.3节中定义的“代码”元素是:
= 1 * VSCHAR代码
A.12。 “access_token”语法
4.2.2 access_token”元素中定义部分和5.1:
访问令牌= 1 * VSCHAR
A.13。 “token_type”语法
4.2.2 token_type”元素中定义部分,5.1,和8.1:
name-char =“-”/”。 “/”_”/数字/α
A.14。 “expires_in”语法
4.2.2 expires_in”元素中定义部分和5.1:
将于= 1 *位
所以。 “用户名”语法
4.3.2节中定义的“用户名”元素是:
用户名= * UNICODECHARNOCRLF
A.16。 “密码”语法
4.3.2节中定义的“密码”元素是:
密码= * UNICODECHARNOCRLF
(73页)
A.17。 “refresh_token”语法
“refresh_token”元素定义在章节5.1和6:
refresh-token = 1 * VSCHAR
A.18。 端点参数语法
新的端点的语法参数在8.2节中定义:
name-char =“-”/”。 “/”_”/数字/α
附录b .使用应用程序/ x-www-form-urlencoded媒体类型
字符。
[w3c.rec - html401 - 19991224]。
字符编码方案。
到下面的八位字节序列(使用十六进制符号):
82年20 25 26日2 b C2 A3 E2 AC
然后在有效载荷为:
+ % 2 b % C2%A3%E2 % 25% 25% 25% ac
(74页)
附录c .确认
b·琼斯。
Brian Slesinsky托德Sieling乔纳森•中士和安迪·史密斯。
布莱恩·伊顿Yaron y Goland,迪克·哈特,汤姆和艾伦。
塑造和形成最终的规格:
伍德沃德。
(75页)
这个文档是布莱恩的主席下做饭,
Peter Saint-Andre, Hannes Tschofenig, Barry Leiba, and Derek Atkins.
The area directors included Lisa Dusseault, Peter Saint-Andre, and
Stephen Farrell.
Author's Address
Dick Hardt (editor)
Microsoft
EMail: dick.hardt@gmail.com
URI: http://dickhardt.org/
[Page 76]