【发布时间】:2019-10-13 16:48:41
【问题描述】:
我正在使用 IdentityServer4,我想从文件中加载签名证书。例如,
var certificate = new X509Certificate2(
path,
password,
X509KeyStorageFlags.EphemeralKeySet);
services.AddIdentityServer()
.AddSigningCredential(certificate)
...
certificate.Dispose();
当我从 IdentityServer 请求令牌时,上面的代码将不起作用。但如果我删除certificate.Dispose();,它将起作用。
我还尝试了另一种选择。我从证书的私钥创建了RsaSecurityKey 并将其用于添加签名凭据。在这种情况下,处理不会破坏任何东西。
var rsk = new RsaSecurityKey(certificate.GetRSAPrivateKey()))
services.AddIdentityServer()
.AddSigningCredential(rsk)
...
certificate.Dispose()
所以我的问题更笼统。我应该处置从现有证书创建的X509Certificate2 对象吗?
从 .NET Framework 4.6 开始,此类型实现 IDisposable 接口。当您使用完该类型后,您应该直接或间接地处理它。
【问题讨论】:
标签: c# identityserver4 idisposable x509certificate2 asp.net-core-2.2