根据文档,IdentityServer使用非对称密钥对来签署和验证JWT。
可以在配置中使用AddTemporarySigningCredential()
,每次启动时创建一个新的RSA,或者使用带有RSA密钥或证书的AddSigningCredential(..)
。
该文档提到临时版本对于开发情况很有用,但它并没有说明在生产环境中使用它时的缺点。
我有一个aspnetcore web api,其中客户端使用IdentityServer4进行身份验证。该系统目前在temporarysigningcredential工作正常,但我想知道使用其他变体是否有任何好处。
谢谢,
答案 0 :(得分:16)
而不是AddTemporarySigningCredential考虑使用 AddDeveloperSigningCredential
来自http://docs.identityserver.io/en/release/topics/startup.html#refstartupkeymaterial:
<强> AddDeveloperSigningCredential 强>
与临时签名凭证的目的相同。但是这个版本 将密钥保留在文件系统中,以便在服务器之间保持稳定 重新启动。这解决了客户端/ api元数据缓存时的问题 在开发过程中失去同步。
警告: AddDeveloperSigningCredential 只有在IdentityServer主机在 SINGLE 计算机上运行时才能使用,对于生产服务器场,您需要使用 AddSigningCredential 。
答案 1 :(得分:15)
缺点是,每次重新启动IdentityServer时,密钥材料都会更改 - 或者IOW - 所有使用以前密钥材料签名的令牌都将无法验证。
“临时”实际上仅适用于您没有其他关键材料的情况。