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

AspNet Core 3.1 下向Identity Server 4登录页传递自定义参数失败

解决方案

1. 先确认客户端参数附加正常

抓包查看跳转到IDP授权端点的请求URL,确认是否已经携带shopId=123参数。如果URL中没有该参数:

  • 给OnRedirectToIdentityProvider事件打断点,确认事件正常触发
  • 检查OpenIdConnect的配置顺序,确认该事件配置没有被后续代码覆盖

2. 配置IS4允许自定义参数

IdentityServer4默认会过滤所有非OIDC协议标准的请求参数,你需要在IDP的客户端配置中,给对应客户端添加允许的自定义参数白名单:

new Client
{
    ClientId = "imagegalleryclient",
    // 其余原有配置(密钥、授权类型、回调地址等)保持不变
    AllowedCustomParameters = new List<string> { "shopId" }
}

配置完成后IS4就不会丢弃shopId参数,会将其存入授权上下文。

3. 读取参数

完成上述配置后,你原来的读取代码即可正常生效:

var context = await _interaction.GetAuthorizationContextAsync(returnUrl);
string shopId = context.Parameters["shopId"];

如果需要更直接的读取方式,也可以直接从登录接口的请求查询参数中获取:

string shopId = Request.Query["shopId"];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:15:01