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

AD FS OpenID Connect用户信息端点仅返回sub的问题求助

AD FS OpenID Connect UserInfo端点仅返回sub值问题排查与解决

问题场景

按照Microsoft官方文档完成AD FS服务器与Web应用的配置后,成功登录可获取token和access token,但调用AD FS OpenID Connect的userinfo端点时仅返回sub值。已执行以下操作但问题未解决:

  • 创建信赖方信任、声明提供程序
  • 在客户端及授权URL中添加profile、openid、email权限范围
  • 在AD FS设置界面勾选对应权限选项
    但响应体中的scope始终仅为openid。

相关代码:

const client = new oneLoginIssuer.Client({
      client_id: configService.get<string>('CLIENT_ID'),
      client_secret: configService.get<string>('CLIENT_SECRET'),
      redirect_uris: [configService.get<string>('REDIRECT_URI')],
      response_types: ['code id_token'],

    });

this.client.authorizationUrl({
      scope: 'profile openid email',
      response_mode: 'form_post',
      nonce: this.nonce,
    });

解决步骤

  • 配置信赖方信任的声明规则
    手动为信赖方添加声明传递规则,将AD FS中的用户属性(如E-Mail Address、Given Name、Surname)映射到OpenID Connect标准声明(如email、given_name、family_name),确保这些属性能被传递到userinfo端点。
  • 验证客户端权限设置
    在AD FS管理控制台的「应用程序组」->对应应用->「客户端」配置中,确认允许的范围里已勾选profile、email,且这些范围的「颁发授权」设置为允许状态。
  • 检查响应类型与scope兼容性
    当前使用response_types: ['code id_token']混合流,可尝试切换为纯授权码流(response_types: ['code'])测试,确认是否能获取完整scope权限。
  • 确认AD FS版本支持
    确保使用AD FS 2016及以上版本,低版本AD FS对OpenID Connect的profile、email标准scope支持不完整。
  • 调试授权请求参数
    抓包查看实际发送给AD FS的授权请求,确认scope参数确实包含profile openid email,排查是否存在代码配置项读取错误的情况。
  • 解码access token验证权限
    使用JWT解码工具解析access token,查看其中的scope字段是否包含profile和email。若access token内仅含openid,说明授权阶段AD FS未授予对应权限,需重新检查信赖方与客户端的权限配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:20:37