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

OIDC请求无openid scope报Identity related scope requests, but no openid scope求助

OIDC请求未携带openid scope报错解决方案

该错误的触发逻辑为OIDC协议的标准校验规则:只要授权请求中包含任意身份类标准scope(profile/email/phone/address等),OIDC提供商(OP)会强制要求请求必须携带openid作为前置scope。

可根据你的实际业务场景选择对应方案:

  • 场景1:仅需要AccessToken做资源接口授权,不需要获取用户身份信息

    1. 先排查当前授权请求的scope列表,移除所有profile/email/phone等OIDC标准身份类scope,仅保留业务资源对应的自定义scope即可,没有身份类scope的前提下OP不会触发openid scope的强制校验。
    2. 如果使用的OIDC客户端库默认自动附加了身份类scope,手动指定scope列表覆盖默认配置即可,示例如下:
    // oidc-client-ts 配置示例
    const authConfig = {
      authority: "https://your-op-service.com",
      client_id: "your-business-client-id",
      // 仅保留资源授权需要的自定义scope,不要加入任何身份类scope
      scope: "goods:read order:write",
      redirect_uri: "https://your-business-domain.com/callback"
    }
    
  • 场景2:需要获取用户身份信息,但业务规则不允许显式传递openid scope

    1. 进入你的OIDC提供商的客户端管理后台,找到对应业务应用的配置项,开启「默认自动附加openid scope」的功能,主流OP(Keycloak、IdentityServer、Authing等)都支持该配置,开启后OP会在后端自动为请求补全openid scope,不会触发校验报错。
    2. 如果是自研的OP服务,可针对性修改校验逻辑:对指定client_id的请求,在校验身份scope时跳过openid的必填检查,或者直接在参数解析层自动注入openid scope。
  • 场景3:使用的OP不支持默认附加scope的配置
    在业务服务和OP之间增加一层反向代理,在代理层拦截授权请求,自动为对应业务应用的scope参数追加openid字段,该方案对业务侧完全无侵入,不需要修改现有业务请求逻辑。

补充说明:追加openid scope仅用于满足OP的协议校验要求,不会改变原有授权请求的权限范围,也不会额外返回不需要的用户字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:42:02