Identity Server 4 - IDX10630: PII is hidden



我对使用加密和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隐藏]"。参数名称:键。KeySize

我不得不承认,我整个周末都在做这个,试图弄清楚如何使用SigningCredentials,但我真的不确定我上面做错了什么。

您可以通过在Startup类的Configure((中添加以下内容来查看开发中的更多详细信息:

if (env.IsDevelopment())
{
IdentityModelEventSource.ShowPII = true; 
}

对于那些有同样问题的人:ShowPII配置是全局设置的,它是IdentityModelEventSource的静态属性,可以在Startup类中设置。添加后,我可以看到它正在为令牌验证抛出InvalidIssuer异常。对我来说,这与我如何生成JWT以与我的API(受Identity Server 4保护(通信有关。我在url:http://localhost:5002(docker-compose网络的外部(上生成令牌,这与我的API中的urlIdentity Server颁发者不同:http://<<docker-service-name>>。因此,如果您正在使用docker-compose,并设法将Identity Server用作同一docker-compose中的独立容器,请注意,您的身份验证应生成API中使用的带有IDENTIICAL颁发者的令牌。

相关内容

最新更新