2016-08-03 158 views
0

我剛開始學習認證和授權,並試圖瞭解REST API的JWT和OAuth。JSON Web令牌和OAuth

我一直在做一些研究,但有幾點仍不清楚:

JWT

  • 是否令牌包含的所有信息,以驗證該請求是安全的?換句話說,當在服務器上生成令牌時,是否需要將它與用戶名/ ID一起保存在數據庫中,以便對接下來對API進行的每次調用進行驗證?
  • HTTP上的JWT是否足夠安全,還是需要HTTPS?

的OAuth

  • 我理解的方式,我可以使用OAuth授權委託給第三方應用程序(這裏作爲一個例子)。如果身份驗證成功,我會從身份驗證調用中收回一個令牌。然後,我可以使用此令牌將所有調用傳遞給我的API,因爲令牌由可信的第三方應用程序(Facebook)發佈。我可以解碼令牌,驗證令牌是否安全有效,然後繼續處理我在API中需要做的任何事情。換句話說,我完全外包了身份驗證,無需我在某處存儲用戶名和密碼。那是對的嗎?

回答

1

令牌是否包含驗證請求是否安全的所有信息?

一個智威湯遜這樣hhhhh.ppppp.sssss的第三部分是在^h EADER服務器私鑰和令牌的p ayload進行數字簽名。服務器會檢測到標題,有效載荷或簽名的任何更改,並拒絕令牌

換句話說,在服務器上生成令牌時,是否需要將它與用戶名一起保存/ id在數據庫中進行驗證,以確認每次對API進行的後續調用?

不,因爲數字簽名保護內容。您可以放心地信任令牌中的任何數據

HTTP上的JWT是否足夠安全,或者是否需要HTTPS?

JWT可能包含隱私敏感信息,並且爲了防止將此類信息泄露給非預期方,應僅通過加密通道(https)傳輸。如果希望防止向客戶披露某些信息,則應對JWT加密。

[OAuth的]換句話說,我完全外包的驗證,消除了對我來存儲用戶名和密碼的地方的需要。那是對的嗎?

是的,你是對的,的OAuth允許用戶授權第三方應用程序,而不暴露自己的憑據