2017-02-12 70 views
0

剛開始查看JWT時,我首先看到的示例要求用戶對包含用戶名和密碼的請求主體以純文本形式執行POST請求。 在這個請求被認證之後,一個JWT被髮送,然後被用於進一步的請求。使用JWT發送用戶名和密碼進行身份驗證

很明顯,我錯過了這裏的一些東西,但是我有沒有在第一次請求中發送不安全的數據?這是我需要HTTPS的地方嗎?

+1

是的,你應該通過https發送用戶名/密碼 – webdeb

+0

@webdeb謝謝。如果我打電話給服務器,它會給我一個網絡令牌,然後我發送用戶名/密碼。這會起作用嗎?另外,如果我有HTTPS,我是否只用HTTPS進行第一次通話,然後用網絡令牌完成其餘工作? –

回答

3

智威湯遜並沒有給你開箱即用的安全,它的主要觀點是確保令牌不被不信任的權限所改變。它只是驗證裏面的數據是正確的。但是,JWT本身,它的數據塊可以被任何人讀取,你可以在客戶端解析它,然後從它讀取userName/email /,如果你願意的話,攻擊者可以閱讀它如果數據塊本身沒有加密,也是如此。

HTTPS會加密客戶端<→服務器之間傳遞的所有數據。它與認證無關,它只是一個協議,無論如何你都應該使用它,或者使用JWT。

1

JWT用於對以前已經向服務器進行身份驗證的用戶進行身份驗證,並且在無狀態環境中非常有用,而不是在真正的有狀態環境中。

JWT的目的是爲用戶存儲足夠的數據,以便接收它的服務器可以使用它來確定用戶是否合法以及他可以做什麼。它們在分佈式環境中非常有用,因爲這樣您就可以將JWT從一臺服務器傳遞到另一臺服務器,只要它們都持有簽名密鑰,它們就能夠僅基於該令牌對用戶進行身份驗證。

用戶名和密碼只對第一個請求中的服務器是必需的,所以服務器可以根據用戶數據庫對用戶進行身份驗證,然後每個請求之後都會使用令牌,使服務器成爲能夠在每次請求時無需往返數據庫就可以對用戶進行身份驗證。

就HTTPS而言,我會說 - 把它用於一切。在當今無處不在的無線網絡中,您的數據比以前暴露得多。

相關問題