2016-05-09 33 views
2

這個問題是非常具體的在這裏找到了JwtHandler庫:JWT Handler NuGet Package沒有頒發者的System.Identitymodel.Tokens.jwt可能嗎?

我試圖創建一個JWT,使用RSA密鑰簽名,以及驗證此JWT。但是我似乎無法從jwt中刪除「Issuer」變量(「iss」)。如果我不包含它,即使在TokenValidationParameters中指定了「ValidateIssuer = false」,驗證也會失敗。

我可以使用這個庫,而不需要一直指定「iss」變量,或者是否有解決此問題的解決方法?

+0

這有什麼更新?你有沒有絆倒任何答案? –

回答

1

在檢查源代碼之後,我發現沒有辦法沒有issuer字段,即使標準(RFC7519)將它作爲可選項。我通過創建JwtSecurityTokenHandler的子類來解決問題,並重寫ValidateToken()方法來修復發行者。接下來,我將它交給base.ValidateToken()。

我也得到了來自我的同齡人我爲什麼要改變或從JWT令牌刪除發行人的問題,以及如何在不損害安全性方面。爲了回答這個問題:我只打算使用公鑰/私鑰證書來簽署jwt令牌,而jwt令牌已經與發行者綁定了。再次檢查發行人會做兩次工作。

更新ANSWER 的System.Identitymodel.Tokens.Jwt已經更新到第5版,我強烈建議升級到這個版本。它修復了發行人問題。這個更新的缺點是它有更多的依賴關係(Microsoft.Identitymodel.Tokens,Microsoft.Identitymodel.Logging,Newtonsoft.Json.Linq),並且不得不將你的代碼重新轉換爲略有不同的接口。

相關問題