仅使用Identity Server4做OAuth2授权不含OpenID Connect scope是否可行?
是否可以发起不携带openid scope的OAuth2请求
完全可以。openid 是 OpenID Connect(OIDC)协议在原生 OAuth2 标准基础上新增的必填 scope,仅在你需要获取标识用户身份的 ID Token 时才需要使用,纯 OAuth2 流程本身没有强制要求携带该 scope。
不同场景的处理规则
- 如果你对接的是纯 OAuth2 授权服务:构造请求时 scope 参数只需要传入你实际需要的业务权限范围即可,比如
user:read、order:write等,无需添加openid,授权服务只会返回 access token,部分场景会同时返回 refresh token,不会生成 ID Token,完全满足你的需求。 - 如果你对接的是默认集成 OIDC 能力的身份提供商(IDP):绝大多数主流 IDP 都兼容纯 OAuth2 模式,你只需要在构造授权请求时不在 scope 中添加
openid即可,服务端检测到没有该 scope 时会自动按纯 OAuth2 流程处理,不会返回 ID Token。
常见注意事项
- 部分 IDP 的默认配置会自动给所有应用请求追加
openidscope,这种情况你可以进入对应 IDP 的应用管理后台,关闭「强制 OIDC 模式」「强制携带 openid scope」类的配置开关,即可正常发起不带openid的请求。 - 不带
openidscope 的授权码模式请求示例如下:
GET https://your-idp-domain.com/oauth2/authorize? client_id=your_app_client_id &response_type=code &redirect_uri=https://your-app.com/callback &scope=user:read order:write &state=random_anti_csrf_value
你按上述规则构造请求后,后续用授权码兑换 token 时,返回结果只会包含 access_token、expires_in、refresh_token(如果开启了刷新令牌能力),不会出现 id_token 字段。
内容的提问来源于stack exchange,提问作者Kakha Salukvadze
相关产品推荐
相关产品推荐

