ASP.NET Core JWT Bearer:设置元数据 backchannel 代理
在检索开始之前使用 BackchannelHttpHandler,除非完整的客户端或自定义配置管理器已经拥有该传输通道。
API 可能收到 bearer 令牌,却在下载服务器的元数据和签名密钥时失败。请在现有注册之后、请求发出之前配置该 JWT bearer 方案:
using System.Net;
using Microsoft.AspNetCore.Authentication.JwtBearer;
builder.Services.Configure<JwtBearerOptions>(
JwtBearerDefaults.AuthenticationScheme, options =>
{
options.BackchannelHttpHandler = new HttpClientHandler
{
UseProxy = true,
Proxy = new WebProxy("http://proxy.example:8080")
};
});与注册名称保持一致;若与默认 Bearer 不同,请使用其实际名称。保留 Authority、Audience 和现有令牌参数。在允许使用公共代理时,公共元数据与签名密钥端点可以为此免账号的 WebProxy URL 选用 HTTP 代理列表中的候选。
在标准配置中,post-configuration 会用该 handler 创建 backchannel。如果完整的 Backchannel 或自定义 ConfigurationManager 已经提供检索器,则改为配置该对象。handler 属性不会同时覆盖两者。
任何代理账号都要在使用前设置到 WebProxy 上,而不是在 SendAsync 内部修改 Proxy。保留 issuer、audience、签名、有效期和额外校验器。OIDC 登录和单独的令牌获取保留各自的 HTTP 路径。