【问题标题】:Identity Server 4 - ExtensionGrant and TokenValidatorIdentity Server 4 - ExtensionGrant 和 TokenValidator
【发布时间】:2021-11-11 05:07:05
【问题描述】:

我的公司需要一个带有外部身份提供商的 SSO 解决方案,所以我查阅了官方文档,发现:https://identityserver4.readthedocs.io/en/latest/topics/extension_grants.html

我实现的自定义流程正在运行,我能够根据来自外部提供商的传入 JWT 令牌生成令牌。我面临的问题是,在实现接口 ITokenValidator 并将其添加到 DI(如文档页面中所述)之后,每个标准流程都开始使用该自定义验证器,因此所有其他应用程序都直接连接到我的 IDS4解决方案在登录阶段抛出“签名验证失败。无法匹配密钥”类型的错误。

我立即认为问题出在我的自定义验证器上,因为在该流程中我使用公钥来验证令牌。发现这一点后,我从 Startup 类中删除了自定义验证器的依赖注入行,并且我的所有标准流程都可以再次工作,而我的自定义流程不是因为它当时使用的是默认令牌验证器(而且还不够好)出于我的目的)。

我的猜测是,通过将自定义验证器添加到 DI,它会覆盖所有其他标准流程应该使用的默认验证器。

我以这种方式为 ExtensionGrant 添加了 DI

services.AddIdentityServer((identityServerOptions) =>
    {
         identityServerOptions.InputLengthRestrictions.Scope = scopeInputLength;
         identityServerOptions.Events.RaiseErrorEvents = true;
         identityServerOptions.Events.RaiseFailureEvents = true;
         identityServerOptions.Events.RaiseSuccessEvents = true;
         identityServerOptions.Events.RaiseInformationEvents = true;
     })
     .AddSigningCredential(signatureCertificate)
     .AddResourceOwnerValidator<ResourceOwnerPasswordValidator>()
     .AddClientStore<ClientStore>()
     .AddProfileService<ProfileService>()
     .AddExtensionGrantValidator<DelegationGrantValidator>()
      // This one
     .AddExtensionGrantValidator<CustomGrantValidator>()
     .AddResourceStore<ResourceStore>();

对于令牌验证器以这种方式

services.AddTransient<ITokenValidator, CustomValidator>();

编辑:如果我不使用依赖注入而是这样做

await new CustomValidator().ValidateAccessTokenAsync(userToken);

默认和自定义授权有效。我是否遗漏了一些东西,比如让应用程序访问公钥来解密在这个流程中传递的令牌?

有解决办法吗?也许我应该为令牌验证器实现不同的接口?我找不到更多关于此的文档。请帮我解决问题

【问题讨论】:

    标签: c# dependency-injection identityserver4 access-token


    【解决方案1】:

    我通过不使用ITokenValidator 的实现解决了我的问题。

    显然,如果您实现此接口甚至ICustomTokenValidator,它将覆盖默认值,并且如果有不同的密钥来加密/解密正在传递的访问令牌,这会导致其他流程出现问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 2021-01-22
      • 1970-01-01
      • 2018-06-27
      • 2017-02-18
      • 2018-01-24
      • 2021-05-18
      相关资源
      最近更新 更多