You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core API对接IdentityServer4:发现端点自定义头注入问题求方案

解决方法

方法1:手动配置ConfigurationManager注入自定义IDocumentRetriever

默认情况下AddOpenIdConnect不会自动复用你注册的IDocumentRetriever实现,需要手动实例化ConfigurationManager<OpenIdConnectConfiguration>并指定自定义检索器,再绑定到OIDC配置选项中:

services.AddAuthentication(options =>
{
    options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddOpenIdConnect(options =>
{
    options.Authority = "你的IdentityServer实例地址";
    options.ClientId = "你的客户端ID";
    
    // 实例化自定义文档检索器
    var customRetriever = new AppHttpDocumentRetriever();
    // 创建ConfigurationManager并传入发现地址、配置检索器和自定义文档检索器
    options.ConfigurationManager = new ConfigurationManager<OpenIdConnectConfiguration>(
        $"{options.Authority}/.well-known/openid-configuration",
        new OpenIdConnectConfigurationRetriever(),
        customRetriever
    );
});

这样就能确保发现文档的请求会使用你的AppHttpDocumentRetriever,从而带上自定义请求头。

方法2:给Backchannel HttpClient添加定向请求头处理器

如果不想修改ConfigurationManager的实例化逻辑,可以给OIDC的Backchannel HttpClient添加自定义DelegatingHandler,仅针对发现端点的请求添加头:

  1. 先实现自定义Handler:
public class DiscoveryHeaderHandler : DelegatingHandler
{
    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        // 判断请求是否指向发现文档端点
        if (request.RequestUri.AbsolutePath.EndsWith("/.well-known/openid-configuration", StringComparison.OrdinalIgnoreCase))
        {
            request.Headers.Add("你的自定义头名称", "对应头值");
        }
        return await base.SendAsync(request, cancellationToken);
    }
}
  1. 在OIDC配置中绑定该Handler:
services.AddAuthentication(options =>
{
    options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddOpenIdConnect(options =>
{
    options.Authority = "你的IdentityServer实例地址";
    options.ClientId = "你的客户端ID";
    
    // 为Backchannel HttpClient配置自定义Handler
    options.BackchannelHttpHandler = new DiscoveryHeaderHandler();
});

这种方式无需改动配置管理器的初始化逻辑,仅定向处理发现文档的请求。

内容的提问来源于stack exchange,提问作者Oleh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:40:36