【问题标题】:Identity Server 4 - IDX10630: PII is hiddenIdentity Server 4 - IDX10630:PII 被隐藏
【发布时间】: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,但我不确定我在上面做错了什么。

【问题讨论】:

标签: c# rsa identityserver4 signing


【解决方案1】:

在 Startup 类中的 Configure() 中添加以下内容可以查看开发中的更多细节:

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

【讨论】:

  • 帮助很大
  • 你是怎么设置的?我在 SharePoint 加载项中使用 asp.net。
  • 这是IdentityModelEventSource 的静态属性。可以在任何你想要的地方设置。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2020-04-22
    • 2021-06-14
    • 2019-09-15
    • 2018-11-08
    • 2021-06-29
    • 2021-11-10
    • 2018-06-27
    • 2018-12-15
    • 2021-11-11
    相关资源
    最近更新 更多