Bra*_*ote 5 identityserver4 asp.net-core-identity asp.net-core-2.0
Identity Server 4文档(此处为http://docs.identityserver.io/en/latest/topics/crypto.html?highlight=data%20protection)讨论了签名密钥和验证密钥。我知道签名密钥是使用
AddSigningCredential(<X509Certificate2>)
Run Code Online (Sandbox Code Playgroud)
有两个用于验证密钥的API
AddValidationKey(<X509Certificate2>)
AddValidationKeys(<Microsoft.IdentityModel.Tokens.AsymmetricSecurityKey[]>)
Run Code Online (Sandbox Code Playgroud)
该文档讨论了对密钥过渡进行签名并将多个验证密钥添加到发现文档中。问题-
IdentityServer使用非对称加密。非对称加密意味着您具有公共密钥和私有密钥。公共密钥是共享的(显然),仅用于加密。私钥是私有的。应该严格保护它,并且永远不要共享它,并用于解密。签名密钥是您的公钥,而验证密钥是您的私钥,所以是的,您需要两者。可以使用X509Certicate,因为证书使用公钥和私钥,但是最终,IdentityServer仅使用证书来获取密钥。
的 AddValidationKeys(多个)方法被明确地用于密钥翻转。例如,您的证书可能会在一年后过期(在大多数情况下为默认值)。在此期间结束时,您将其替换为新证书。但是,客户端可能仍然具有访问令牌,并且已通过先前证书中的公钥对访问令牌进行了加密,并且IdentityServer需要先前证书中的私钥来对其进行解密。使用此方法,可以仅添加先前的密钥,以用于验证材料IdentityServer无法使用当前密钥进行验证。
数据保护实际上是完全独立的。它也使用公钥和私钥来完成其工作,因此从技术上讲,您也可以对IdentityServer使用相同的密钥。但是,最好将密钥限制为唯一的用途。这样,如果您确实受到损害,就不会完全受到损害,并且可能会在一定程度上限制潜在泄漏的范围。
| 归档时间: |
|
| 查看次数: |
2025 次 |
| 最近记录: |