OAUTH集成过程中一些细节问题做个笔记

部分第三方的网站通过oauth集成的过程中,出现的细节上的问题导致无法集成到Provider

1,参数编码问题

[color=red]来自互联网[/color]:

所有参数名称和值都必须根据[RFC3986]所定义的百分号机制进行转义。 保留字符集([RFC3986] section 2.3)内的不得被编码,其它的必须被编码,编码后的十六进制字符必须[color=red]大写[/color]。 百分号转换前的参数名称和值的文本必须是[color=red]UTF-8[/color]编码,见[RFC3629]。


[color=red]非保留字符 = 字母, 数字, '-', '.', '_', '~'[/color]

2,请求字符串拼接


请求参数被收集起来,排序并串接为一个普通的字符串:

除realm以外OAuth HTTP Authorization 首部中的参数
HTTP POST请求体中的参数(content-type为application/x-www-form-urlencoded)。
HTTP GET URL中的查询部分参数(定义于 [RFC3986] section 3).
oauth_signature参数必须被排除。

参数按照以下方式正常化为一个字符串:

按照参数名字典顺序排序。同名参数按其值排序,例如:
a=1, c=hi%20there, f=25, f=50, f=a, z=p, z=t
已排序参数串接为一个字符串。 每个参数名后跟一个“=”字符(ASCII代码61),无论参数值是否为空。 每对参数之间用“&”字符(ASCII代码38)分开。例如:
a=1&c=hi%20there&f=25&f=50&f=a&z=p&z=t


3,返回含义


HTTP 400 Bad Request
Unsupported parameter
Unsupported signature method
Missing required parameter
Duplicated OAuth Protocol Parameter

HTTP 401 Unauthorized
Invalid Consumer Key
Invalid / expired Token
Invalid signature
Invalid / used nonce


总结: oauth10a的细节较多, 可以参照文档仔细对照实现。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章