2013-01-03 66 views
0

HTTP規範說,HTTP請求中的Auhtorization頭一致性

HTTP訪問認證在「HTTP認證: 基本和摘要訪問認證」[43]中描述。如果請求是 認證並指定領域,相同的憑據應該對該領域內的所有其他請求有效(假設認證方案本身不需要其他 ,例如 作爲憑據根據挑戰值或使用 同步時鐘)。

我真的不明白這是什麼意思,但這裏是我的情況是否有什麼違反HTTP規範?我使用Java REST服務

  • 客戶端發送的用戶名:使用使用HTTP基本
  • 服務器發回HTTP授權頭密碼令牌
  • 現在客戶端發送一個定製的授權令牌來代替密碼進行進一步的請求仍然使用HTTP基本用戶名的HTTP授權頭仍然:令牌

現在,這感覺不對,因爲我真正用auth令牌做的事情不是真正的HTTP基本授權。同樣的頭文件的使用在請求之間不一致。

但另一方面,我不想爲令牌交換創建另一個自定義頭。因爲在使用自定義標題時,base64很難用測試工具對它們進行編碼。請求之間的標頭仍然不一致。

注意:這些請求指的是不同的端點

你有什麼建議?

回答

0

如果你這樣做,因爲你使用的是相同的頭文件,你不需要服務器端的邏輯來區分何時登錄是實際的登錄,而不是你的令牌嗎?在一天結束時,HTTP授權已經是一個令牌(只是用戶名/密碼字符串的一個簡單的編碼版本),所以在所有情況下您都收到一個令牌,現在您必須解碼它,決定它是否是您的會話令牌,或者如果它是用戶名/密碼,並因此檢查兩個「好令牌」來源。

我會反對這個建議,但不是因爲你違反標準,它只是感覺錯綜複雜。

爲什麼您需要首先將用戶名/密碼更改爲令牌?您是否重定向到不再需要HTTP基本身份驗證的端點?

+0

我通過參考剩餘資源路徑瞭解了什麼是什麼。 url/login vs url/token – Spring

+0

啊,從這個角度來看,那麼你的兩個端點是兩個不同的東西,並且對於你的url/token端點,它恰好是令牌是用戶名。 url/login和url/token不相關,你可以使用其中一個來獲得另一個的「用戶名」。 – palako

+0

是的,但最新的答案是我的問題?:) – Spring