2017-07-13 31 views
1

當使用IdentityServer 3簽名證書(用於簽署jwt令牌)到期時會發生什麼情況?IdentityServer 3簽名證書到期

目前還不清楚,我找不到任何文檔,除此之外可能會發出已過期的警告。 (Ref。https://identityserver.github.io/Documentation/docsv2/configuration/events.html

是否有任何機制阻止使用過期的簽名證書?
在驗證由過期證書籤名的令牌時,客戶端(客戶端是使用IdentityServer進行身份驗證的Web API)會發生什麼? (例如,如果https://github.com/IdentityServer/IdentityServer3.AccessTokenValidation作爲中間件)

回答

0

嗯,我剛剛測試了這個(上IdentityServer4),它似乎繼續使用過期簽名證書快樂工作,這是我的測試證書的有效性:

enter image description here

我可以登錄,獲取ID令牌和訪問令牌,然後使用訪問令牌訪問API。什麼IdentityServer但是沒有做的是記錄警告:

2017-07-13 12:15:54.871 +02:00 [Warning] 
    Certificate "CN=test_expired_signing_certificate" has expired on "13/07/2016 14:14:37" 

這符合什麼IdentityServer(3)文檔說here

IdentityServer提出了一些在運行時的事件,如:

喀嚓...

  • 過期/無效/沒有簽名證書

默認情況下,這些事件被轉發到配置的日誌提供程序 - 自定義事件服務可以以任何適合該環境的方式處理或轉發它們。

所以這將是你的方式來檢測它已經太晚了。一個更好的選擇是週期性地在密鑰的有效期內翻轉簽名密鑰,這是一種常用的方法,如果必要的話還允許撤銷密鑰。見this issue這裏討論的過程,基本上IdentityServer可以處理兩個密鑰:

[中間件刷新]元數據文件...每天一次。

元數據文檔可以保存2個鍵 - 主鍵和輔助鍵,並且中間件將在存在時加載和使用兩個鍵(JWT具有允許選擇正確鍵的鍵標識符)。

當你開始翻轉 - 設置兩個鍵和在某一點上交換主要和次要。

+0

我們似乎也得到相同的結果;一切都在繼續工作。您是在本地驗證令牌還是使用驗證端點? – Anton

+0

就在本地使用中間件,其中的內容是微軟的jwt持票人令牌驗證(即這是IdentityServer使用的)。 – Matt