如何从 Identity Server 应用程序执行外部身份验证请求?

How to perform external auth request from Identity Server app?

我正在使用 Identity Server 4,我需要与外部授权进行交互 API。 授权过程必须是这样的:

  1. 客户端将根据用户数据生成的令牌发送到 IdentityServer
  2. IdentityServer 使用特定 header 和 body 创建 POST 请求。
  3. IdentityServer 将此请求发送到 ExternalAuthApi 并获得包含令牌的响应
  4. IdentityServer 将该令牌返回给客户端(并缓存它)

我查看了有关外部身份提供者的文档,但它需要以某种方式在客户端和 ExternalAuthApi 之间进行交互,我需要避免这种交互。

如何实现IdentityServer与ExternalAuthApi的直接交互?可能吗?

我使用 ITokenCreationService 实现了这一点。

我已经创建了自己的实现并添加到服务中:services.AddTransient<ITokenCreationService, ProviderBasedTokenCreationService >(); 现在在 CreateTokenAsync 中调用第 3 方服务,如

    public override async Task<string> CreateTokenAsync(Token token)
    {
        var provider = token.GetProviderClaim();
        switch (provider)
        {
            case "3rdPartySystem_A":
                return this._systemAClient.RequestToken(token.TransformToSystemAFormat());
            case "anotherSystem":
                return this._anotherSystemClient.RequestToken(token.TransformToAnotherSystemFormat());
            default:
                return await base.CreateTokenAsync(token);
        }
    }