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

.Net Core OpenID无法获取ID_token:如何将client凭证放在请求头而非请求体

解决方案

你只需要在AddOpenIdConnect的配置逻辑中新增TokenEndpointAuthenticationMethod属性配置,指定客户端凭证使用Basic认证方式传输即可。默认该属性值为ClientSecretPost,会将client_id和client_secret放在请求体中提交,修改为Basic枚举值后,框架会自动对client_id和client_secret做Base64编码,放到请求的Authorization头中完成Basic认证。

修改后的AddOpenIdConnect配置段如下:

.AddOpenIdConnect("test",o => {
    o.SignInScheme = "Cookies";
    o.ClientId = "id";
    o.ClientSecret = "08";
    o.Authority = "https://ex.com";
    o.ResponseType = "code";
    o.MetadataAddress = "https://ex.com/.well-known/openid-configuration";
    o.SaveTokens = true;
    o.GetClaimsFromUserInfoEndpoint = true;
    // 新增这行配置即可
    o.TokenEndpointAuthenticationMethod = OpenIdConnectClientCredentialMethod.Basic;
});

如果编译时提示找不到枚举类型,可在文件头部引入对应命名空间:

using Microsoft.AspNetCore.Authentication.OpenIdConnect;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:00:01