2015-12-12 130 views
2

我正在閱讀關於jwt Web令牌的文章,作爲正在響應用戶的訪問令牌。其中一些提到Web令牌應該能夠被用戶解碼。應該加密jwt Web令牌嗎?

這是否意味着解密整個Web令牌不是一個好習慣?例如,我想返回下面的jwt Web令牌給用戶可以解碼這條信息的地方。

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ 

但是,我覺得,我不想讓用戶能夠解碼他/她的訪問令牌,所以我用另一種加密算法來加密一切成另一種形式如下,並回傳給用戶。

sdasdsW1dadwdsadsasadsadas 

所以,我會解密這個新的文本,當我得到這個訪問令牌的服務器和解碼它。

我的問題是: 如果我不想向用戶公開某些可用的索賠值(如用戶ID),Issit建議這樣做?如果不是,那麼更好的選擇是什麼?

回答

1

智威湯遜是「簽名」的,因此其內容不受篡改:您不能在不使其無效的情況下更改其內容。

您可以選擇對內容進行「加密」,因此只有發行者(創建令牌的實體)和消費者(驗證後註定要使用其內容的實體)才能看到它們。

有應該是一個標準:JWE

+0

簡單來說,加密整個JWT是錯誤的,這樣消費者現在就可以知道內容了嗎?我的意思是使用自己的算法再次加密整個jwt令牌,而不是選擇加密內容。 – vincentsty

+0

這沒有錯。它可能並不總是必要的。如果信息是敏感的,通常是必需的。但情況並非總是如此。我會堅持標準。 –

2

智威湯遜(RFC7519)只是爲了安全傳輸從開戶行向觀衆通過HTTP要求以緊湊的方式。

JWT可以是:

  • 簽署(JWS - RFC7515
  • 加密(JWE - RFC7516
  • 簽名,則加密(僅在這個順序)。整個JWS是JWE的有效負載

如果您想讓持有者(客戶端)或第三方隱藏敏感信息,那麼加密JWS是有道理的。

真正的問題是:觀衆是否支持JWE?如果是,支持哪些算法?