【发布时间】:2018-11-12 02:22:11
【问题描述】:
我对使用加密和 rsa 令牌还很陌生,我正试图让 IDentityServer4 不使用开发人员签名,而是使用我自己的签名。到目前为止,这是我尝试过的:
var keyInfo = new RSACryptoServiceProvider().ExportParameters(true);
var rsaSecurityKey = new RsaSecurityKey(new RSAParameters
{
D = keyInfo.D,
DP = keyInfo.DP,
DQ = keyInfo.DQ,
Exponent = keyInfo.Exponent,
InverseQ = keyInfo.InverseQ,
Modulus = keyInfo.Modulus,
P = keyInfo.P,
Q = keyInfo.Q
});
services.AddIdentityServer()
.AddSigningCredential(rsaSecurityKey)
.AddInMemoryPersistedGrants()
.AddInMemoryIdentityResources(Config.GetIdentityResources())
.AddInMemoryApiResources(Config.GetApiResources())
.AddInMemoryClients(Config.GetClients())
.AddAspNetIdentity<User>();
但是,当我运行 Identity Server4 并被重定向到另一个网站的登录页面时,我收到以下错误:
IDX10630:用于签名的“[PII is hidden]”不能小于“[PII is hidden]”位。 KeySize: '[PII 被隐藏]'。 参数名称:key.KeySize
我不得不承认,我整个周末都在研究这个问题,试图弄清楚如何使用 SigningCredentials,但我不确定我在上面做错了什么。
【问题讨论】:
-
嗯,一个简单的解决方法是调用 '[PII is hidden]' 然后调用 '[PII is hidden]',
-
@JamesKPolk 我不明白你的意思
标签: c# rsa identityserver4 signing