首页 > 解决方案 > 如何为代理通信的 Auth0 授权设置 User-Agent http-header

问题描述

我们正在设置一个新的 Asp.Net Core 3.0 Web 应用程序。在针对此 WebApp 使用 Auth0 进行身份验证时,该应用会尝试使用 HTTP GET 访问 .eu.auth0.com。要通过我们的公司代理访问此站点,该应用程序需要发送一个 User-Agent http 标头。

我的尝试是添加一个自定义 Http-Message-Handler,它将这个标头添加到授权后端的所有请求中。

public class CustomHttpMessageHandler : DelegatingHandler {

    public CustomHttpMessageHandler() {
        InnerHandler = new HttpClientHandler();
    }

    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) {
        request.Headers.Add("User-Agent", "myApp/0.1.0");

        return await base.SendAsync(request, cancellationToken);
    }
}

此处理程序在 Startup.ConfigureServices() 中设置:

services.AddAuthentication(options => {
       options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
       options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;

}).AddJwtBearer(options => {
       options.SaveToken = true;
       options.Authority = domain;
       options.Audience = Configuration["Auth0:ApiIdentifier"];
       options.BackchannelHttpHandler = new CustomHttpMessageHandler();
});

调试时,运行此代码并将用户代理添加到请求中。这里的问题是,应用程序(在 GET 之前)向 .eu.auth0.com 发送了一个 HTTP OPTION 请求,我无法修改该请求。

有没有办法为授权中间件设置这个 Http-Header?甚至在全球范围内?或者我可以为他们提供一个完整的自定义 Http-Client 吗?

标签: c#asp.net-core

解决方案


推荐阅读