Identity Server 4 - IDX10630:PII 已隐藏
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: The '[PII is hidden]' for signing cannot be smaller than '[PII is hidden]' bits. KeySize: '[PII is hidden]'.
Parameter name: key.KeySize
我不得不承认,我整个周末都在忙这个,试图弄清楚如何使用 SigningCredentials,但我不太确定我在上面做错了什么。
您可以通过在 Startup class 中将以下内容添加到 Configure() 来查看开发中的更多详细信息:
if (env.IsDevelopment())
{
IdentityModelEventSource.ShowPII = true;
}
对于遇到同样问题的人:
ShowPII
配置是全局设置的,它是 IdentityModelEventSource
的静态 属性,例如可以在启动 class 中设置。添加它后,我可以看到它抛出一个 InvalidIssuer 异常以进行令牌验证。对我来说,这与我如何生成 JWT 以与我的 API(受 Identity Server 4 保护)进行通信有关。我在 url 上生成令牌:http://localhost:5002
(在 docker-compose 网络之外)这与我的 [=18= 中的 url Identity Server 发行者不同]:http://<<docker-service-name>>
。因此,如果您正在使用 docker-compose 并设法将您的身份服务器用作同一 docker-compose 中的单独容器,请注意您的身份验证应生成一个带有 的令牌在您的 API.
中使用的 IDENTICAL 发行人
我对使用加密和 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: The '[PII is hidden]' for signing cannot be smaller than '[PII is hidden]' bits. KeySize: '[PII is hidden]'. Parameter name: key.KeySize
我不得不承认,我整个周末都在忙这个,试图弄清楚如何使用 SigningCredentials,但我不太确定我在上面做错了什么。
您可以通过在 Startup class 中将以下内容添加到 Configure() 来查看开发中的更多详细信息:
if (env.IsDevelopment())
{
IdentityModelEventSource.ShowPII = true;
}
对于遇到同样问题的人:
ShowPII
配置是全局设置的,它是 IdentityModelEventSource
的静态 属性,例如可以在启动 class 中设置。添加它后,我可以看到它抛出一个 InvalidIssuer 异常以进行令牌验证。对我来说,这与我如何生成 JWT 以与我的 API(受 Identity Server 4 保护)进行通信有关。我在 url 上生成令牌:http://localhost:5002
(在 docker-compose 网络之外)这与我的 [=18= 中的 url Identity Server 发行者不同]:http://<<docker-service-name>>
。因此,如果您正在使用 docker-compose 并设法将您的身份服务器用作同一 docker-compose 中的单独容器,请注意您的身份验证应生成一个带有 的令牌在您的 API.