2011-12-13 25 views
4

我最近發佈problem我有身份驗證,但沒有收到任何答覆,所以我想另一種方式來問這個問題,而不是多餘的。摘要,基本和承載身份驗證

我所看到的應用documentation三種方式來傳遞訪問令牌認證和接收我想要得到的信息:HTTP 摘要 AUTH,HTTP 基本權威性和承載令牌認證。這些區別並不明確,我在Bearer token auth(檢查第5步)的嘗試沒有奏效。

有人可以解釋這三個是什麼,並希望指出我做錯了什麼?

回答

1

HTTP基本驗證和HTTP摘要驗證沒有太大區別。

對於基本身份驗證使用oAuth系統的用戶名的請求附加冒號並與密碼連接。結果將比用Base64算法編碼。

例如說usernamedemo和你access_token123所以在這種情況下,連接後得到的字符串將'demo:123',一旦我們申請的Base64編碼,它將成爲ZGVtbzoxMjM=

現在這個編碼字符串在傳遞並且由oAuth提供者解碼。再者,這不是一個非常強的編碼機制,並且可以很容易地解碼,因爲這個Auth系統不適用於非常高的安全系統。

再次文摘還使用HTTP協議比在plaintext .Digest發送數據基本OAuth的發送和收到的數據,但它更好使用MD5 cryptographic hashing類型的算法,以你的password/access_token加密,這在它旁邊使用nonce值停止重放攻擊。

希望這會給你一些關於他們工作方式的想法。

更新

我剛纔看到的給我吧代碼

GET /api/v0/tags HTTP/1.1 
Host: gimmebar.com 
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-us) AppleWebKit/533.6+ (KHTML, like Gecko) Version/4.0 Safari/528.16 Titanium/1.1.0 
Accept: */* 
Accept-Language: en-us 
Accept-Encoding: gzip, deflate 
Authorization: Digest username="funkatron", realm="GimmeBarAPI", nonce="7a3ab1f9cde605f27797cd04c4d1fcf6", uri="/api/v0/tags", response="3654f9b1b2ba9489e1f01ae792852987", opaque="94619f8a70068b2591c2eed622525b0e", algorithm="MD5", cnonce="6897ccbff3b08776ab61e69a814c05b4", nc=00000001, qop="auth" 
Connection: keep-alive 

,如果你看到在發送它們通過與nonceusername。所以一起使用的哈希算法的要求他們都在應用程序中創建它們並放置在標題部分。所有你需要找到我們需要放置的標題名稱。

+0

感謝您的迴應,但我仍然不清楚如何在代碼中實現這一點。你有什麼建議嗎? – captDaylight

+0

@captDaylight我不會建議去基本身份驗證,因爲這太基本了。另一方面,當您創建請求時,您必須使用「MD5」加密用戶名和密碼,並將它們放在標題部分。 –

+0

首先,它是一個':',用於分隔「基本」身份驗證中的用戶名和密碼。承載是OAuth專用的東西,您對OAuth的引用完全與基本的HTTP授權標頭混淆。 – abourget

0

當您針對服務器進行身份驗證時,不記名令牌在服務器端生成。然後,對於任何後續請求,請在請求頭中提供生成的承載令牌。

從這些令牌開始使用私鑰生成安全的角度來看,只有服務器驗證用戶知道這個鍵

jwt他們有很好的文檔在這個特定的主題

的gimmebar documentation是如何獲得

POST/API/V0/auth /中reqtoken HTTP/1.1

很清楚

響應消息

{ 「request_token」: 「390a9b193fc51be1a78d13bf69555212」, 「過期」:1309375411}

0

「HTTP基本認證」 和 「HTTP摘要」 認證使用用戶名和密碼。 HTTP Digest驗證更安全,因爲它不會以純文本形式發送用戶名和密碼。

「HTTP承載認證」使用access_token進行認證。

您的HTTP承載身份驗證代碼對我來說看起來不錯。