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

Outlook Web Add-in SSO令牌获取及Graph调用401错误排查

问题排查与解决方法

一、错误13006(获取SSO令牌失败)的排查点

  • 清单文件WebApplicationInfo配置校验

    • Id必须严格匹配Azure AD应用注册的客户端ID,不能有拼写错误
    • Resource格式必须是api://{你的域名/localhost端口}/{客户端ID},确认localhost端口和你Web项目实际运行的端口完全一致
    • 若要调用Graph,Scopes里必须添加对应权限范围,比如调用/me需要User.Read,当前清单里的Files.Read不满足需求,先补上<Scope>User.Read</Scope>
  • Azure AD应用注册配置检查

    • 进入应用注册的「API权限」页面,添加Microsoft Graph的委托权限(如User.Read),并完成管理员同意(租户内应用必须操作这一步)
    • 确认「重定向URI」已添加加载项的回调地址,格式为https://{你的域名/localhost端口}/auth-callback(对应ASP.NET项目的OAuth回调路径)
    • 检查「暴露API」部分,是否已添加api://localhost:44355/{客户端ID}这个标识符,且加载项需要的权限范围已正确暴露
  • 环境与账号验证

    • 必须使用Office 365工作/学校账号,本地Exchange服务器账号若未启用Modern Authentication,会导致SSO失败,需确认Exchange已开启Modern Auth

二、调用Graph /me返回401的解决方法

  • 修正令牌受众
    默认通过OfficeRuntime.auth.getAccessToken()获取的令牌,受众是加载项自身API,而非Microsoft Graph。需在调用时指定Graph资源,修改代码如下:

    const accessToken = await OfficeRuntime.auth.getAccessToken({
        allowSignInPrompt: true,
        resource: "https://graph.microsoft.com"
    })
    
    const me = await axios.get(`https://graph.microsoft.com/v1.0/me`, {
        headers: {
            Authorization: `Bearer ${accessToken}`,
            'Content-Type': 'application/json',
        },
    })
    
  • 权限配置补全

    • 清单文件的Scopes必须包含User.Read权限
    • Azure AD应用注册里必须添加User.Read委托权限并完成管理员同意,否则令牌会缺少权限声明,被Graph拒绝
  • 令牌有效性验证(可选)
    用jwt.ms解码获取到的令牌,检查aud字段是否为https://graph.microsoft.com,scp字段是否包含User.Read,不匹配则说明资源或权限配置有误

三、.NET Framework 4.8项目额外注意事项

  • 确保ASP.NET项目的Global.asax或Startup.cs已正确配置Azure AD OAuth2中间件,匹配应用注册的客户端ID和密钥
  • 校验项目SSL配置,运行端口必须和清单Resource里的端口一致,且证书需可信(可使用IIS Express自签名证书或导入可信证书)
  • 若通过后端代理调用Graph,后端需使用On-Behalf-Of流程获取Graph令牌,不能直接复用前端拿到的令牌

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:41:17