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的細節較多, 可以參照文檔仔細對照實現。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章