Identity Server 4-IDX10630:PII隐藏

Boj*_*jan 12 c# signing rsa identityserver4

我对使用加密和rsa令牌还很陌生,我正在尝试让IDentityServer4不使用developersigning,而是我自己的一种。到目前为止,这是我尝试过的:

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>();
Run Code Online (Sandbox Code Playgroud)

但是,当我运行Identity Server4并重定向到另一个网站的登录页面时,出现以下错误:

IDX10630:用于签名的“ [PII被隐藏]”不能小于“ [PII被隐藏]”位。KeySize:“ [PII隐藏]”。参数名称:key.KeySize

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

use*_*816 26

You can see more details in development by adding the following to Configure() in the Startup class:

if (env.IsDevelopment())
{
     IdentityModelEventSource.ShowPII = true; 
}
Run Code Online (Sandbox Code Playgroud)


Iur*_*iro 5

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