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

ASP.NET Core 3.1配置无well-known地址的OpenID Connect如何手动填参数

结论

可以手动填写所有OpenID Connect所需配置,无需依赖自动拉取.well-known元数据地址。

实现方式

你只需要在OIDC配置中手动为Configuration属性赋值OpenIdConnectConfiguration对象即可,完整配置示例如下:

首先引入所需命名空间:
using Microsoft.IdentityModel.Protocols.OpenIdConnect;

然后修改你的服务注册代码:

.AddOpenIdConnect(cfg =>
{
    // 手动配置OIDC元数据,替代自动拉取
    cfg.Configuration = new OpenIdConnectConfiguration
    {
        Issuer = "https://myurl.io",
        AuthorizationEndpoint = "https://myurl.io/oauth2/authorize",
        TokenEndpoint = "https://myurl.io/oauth2/token",
        UserInfoEndpoint = "https://myurl.io/oauth2/userinfo",
        JwksUri = "https://myurl.io/oauth2/jwks",
        // 按需补充结束会话端点等其他所需配置
    };

    cfg.ClientId = "123455555";
    cfg.ClientSecret = "11111";
    cfg.ResponseType = "code";
    cfg.Scope.Clear();
    cfg.Scope.Add("openid");
    
    // 配置令牌验证参数
    cfg.TokenValidationParameters.ValidIssuer = "https://myurl.io";
});

注意事项

  • 所有手动填写的端点地址需要和你所用的OIDC身份提供商实际提供的地址完全一致,否则会出现授权、令牌兑换等流程失败
  • 上述配置仍保留了JwksUri配置,框架会自动拉取签名公钥用于令牌验签。如果你的身份提供商密钥不会频繁轮换,也可以手动配置TokenValidationParameters.IssuerSigningKey属性指定签名公钥,完全关闭所有外部元数据拉取行为,但不推荐该做法,密钥过期后需要手动修改代码重新发布
  • 如果你后续想要排查自动拉取元数据失败的原因,可以在服务启动时添加IdentityModelEventSource.ShowPII = true;配置,即可看到错误信息中隐藏的具体请求地址和详细报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:27:05