.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
相关产品推荐
相关产品推荐

