簡體   English   中英

我對JWT的方法 - REST API

[英]My approach for JWT - REST API

我的問題是關於我的JWT與REST實現的方法。

我在客戶端使用AngularJS,在服務器端使用PHP。

第一次加載頁面時,我向服務器發出一個GET請求並從Web服務(編碼簽名)獲取簽名。

當有人打開網頁時,我們會提供登錄表單,當用戶正確填寫時,我們會以JWT加密格式向服務器發送登錄信息:

Header(ALGORITHM & TOKEN TYPE).Payload(Login form data).Signature(Received from the first GET web service call)

現在,登錄后,我們從服務器獲得了exp即令牌過期超時數據。 現在我們向登錄用戶顯示另一個表單。 它用於創建員工。 所以,我的實現是:

  • 我們提出表格(使用angularjs)
  • 用戶輸入數據
  • 系統驗證表單
  • 如果表單條目正確,則系統會觸發addEmployee webservice。 但是我們僅在header authorization bearer傳遞數據。 例如:

Host: mysite.com POST: /services/addEmployee Accept: application/json Content-Type: application/json Authorization: Bearer Header(ALGORITHM & TOKEN TYPE).PAYLOAD(Employee form data + EXP token expire time received in the response of login web service).Signature

所以,這里我們不會在請求主體上傳遞任何內容。 即使這是POST請求。 在服務器端,我們只是解碼承載並獲得有效負載。

我真的不想以純文本格式發送任何數據。 例如,如果我們在正文中發送POST數據,那么任何人都可以看到正在傳遞的內容。 我希望將我的Web服務加密到某種程度。 這種方法無論如何都是正確的還是有害的?

我認為你的做法是錯誤的。 JWT有效載荷不用於保存敏感信息。 任何人都可以閱讀它。 您可以記錄有效負載,但這不是JWT通常用於的方式。

通常,JWT有效負載應包含不敏感或特定於請求的聲明(例如,您的員工形成數據)。 將這些數據保存在請求正文中,這樣您就可以將JWT重用於不同的API調用,無論您使用哪種HTTP動詞和參數來滿足您的不同需求。

整個請求將使用SSL編寫,因此您不會發送任何純文本數據。 永遠不要在沒有HTTPS的情況下使用它,因為任何人都可以獲得您的令牌並冒充用戶。

希望它有所幫助,問候。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM