为何Identity Server 4的POST /connect/token接口未收到acr_values参数
关联现有租户用户身份验证时acr_values参数未传递解决方案
问题根因
acr_values是OpenID Connect协议的可选请求参数,用于向身份提供商传递租户标识、认证强度等自定义上下文,所有主流租户身份系统都不会自动生成该参数,必须在构造认证请求时显式声明。
修复方案
根据你使用的技术栈选择对应配置方式:
- 后端集成(以ASP.NET Core为例):在OpenID Connect认证事件的重定向阶段手动注入参数
builder.Services.AddAuthentication() .AddOpenIdConnect("tenantOidc", options => { options.Authority = "你的身份提供商地址"; options.ClientId = "你的客户端ID"; // 其余基础配置省略 options.Events.OnRedirectToIdentityProvider = context => { // 传入你要关联的租户标识等自定义acr值 context.ProtocolMessage.SetParameter("acr_values", "tenant:你的现有租户ID"); return Task.CompletedTask; }; });
- 前端集成(以auth0.js、oidc-client-js为例):构造登录请求时显式传入参数
// oidc-client-js示例 const userManager = new UserManager(settings); userManager.signinRedirect({ acr_values: "tenant:你的现有租户ID" });
验证方式
修改配置后,在浏览器开发者工具的「网络」标签页,过滤身份提供商授权端点(通常路径为/authorize)的请求,查看请求参数中是否包含acr_values及对应值即可确认配置是否生效。
问题相关截图:
内容的提问来源于stack exchange,提问作者Ismail Fedaoui
相关产品推荐
相关产品推荐

