密鑰,簽名和加密


layout: docs-default

密鑰,簽名和加密

IdentityServer在幾個地方依賴于加密,下面是簡單介紹:

加密傳輸(HTTPS)

IdentityServer默認要求所有請求都通過HTTPS,只通過安全傳輸機制和IdentityServer通信是強制要求。
當然在一些特定的場景,比如SSL被卸載, 可以稍微放寬點要求。請看部署 了解更多信息.

SSL/TLS是在托管程序里面配置的---比如IIS或者直接用HTTP.SYS.

令牌簽名

身份令牌和JWT訪問令牌通過RSA算法(RS256),使用X.509證書簽名。簽名證書在IdentityServerOptionsSigningCertificate屬性設置。這個屬性對于身份令牌和JWT訪問令牌是必須設置的。
如果用的是參考令牌,可以不設置簽名證書。

備注 密鑰長度不能小于2048 字節.

簽名密鑰輪轉

X.509證書是有生存期的,不停機更新和輪換簽名密鑰是一件苦難的事情。好消息是,IdentityServer有一些特性可以讓它別的簡單些。

  • 發現文檔會公布當前的公開密鑰(和備用密鑰). 令牌使用者可以從中了解密鑰的一些信息。
  • 所有的JWT令牌都包含一個密鑰標識,這個標識和發現文檔里的一一對應。
  • 訪問令牌驗證中間件周期(每24小時)檢查發現文檔來更新密鑰配置。

密鑰輪換步驟基本如下:

  1. 拿到一個新的證書替換舊的。
  2. 在選項中把這個新的證書設置為SecondarySigningCertificate。 現在IdentityServer會把新舊兩個證書都公布在發現文檔中,訪問令牌驗證中間件可以處理被任一證書加密的令牌。
  3. 等待24小時,等所有的客戶端都已經更新配置了。
  4. 把新的證書設置為主SigningCertificate. 移除舊的證書。

Cookie 保護

Cookies同樣需要保護,IdentityServer使用Katana數據保護機制來實現它。如果IIS托管我們的應用。Katana會使用ASP.NET的機器密鑰來保護所有的cookies。如果部署在web farm上,那么需要手動同步所有節點上的密鑰。
如果是自托管,可以接入自定義的Katana數據保護插件或者使用IdentityServer的基于X.509證書的數據保護器。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容