2015-10-13 57 views
2

如果我有兩個JWT,它們的聲明和標題集相同,但它們存儲在JSON中的順序是不同的,它們應該被認爲是相等的嗎?如果他們的聲明/標題的順序不同,兩個JWT仍然應該被視爲相等嗎?

澄清:

我知道,作爲JWTs的用戶,你不應該需要對它們進行比較,但是這不是我在做什麼。

假設我們有一些jwt庫,並且你有一些對象代表了一個JWT的解碼形式。如果我們從解碼的JWT創建一個編碼的JWT,然後將其應用於某個函數,該函數將再次返回解碼的JWT。如果由於解碼過程而使某些集合中的聲明或標題存儲順序發生了變化,我們是否認爲兩個解碼的JWT是相等的?

想更多地瞭解這一點,或許將標題和聲明存儲在具有某種順序概念的集合中是錯誤的?使用像一個集合使這個問題消失?

+0

你爲什麼要比較兩個智威湯遜?一個JWT應該擁有所有需要授權的信息來抵制令牌。 – jfadich

回答

2

取決於「不同」的含義。如果索賠是相同的,那麼它們是相同的,即傳遞的信息是平等的。但是,如果它們都具有相同的簽名,那麼至少有一個將是無效的。

此外,您應該不需要比較智威湯遜索賠。如果您要存儲令牌並比較給定的令牌,那麼您應該重新審視爲什麼您使用JWT而不是會話。

智威湯遜是獨立設計的。由於JWT令牌是基於聲明的身份驗證,因此驗證是針對簽名完成的,而不是針對服務器上的任何內容。

相關問題