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

关于Azure Function复用AAD转发的Bearer Token调用Microsoft Graph的疑问

SharePoint Online SPFx 调用Azure Function 令牌相关疑问解答

我开发了基于TypeScript/JavaScript的SharePoint Online SPFx Web部件,该部件调用Azure Function时,Azure AD会转发部分请求头,示例如下:

..
authorization: "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ii1LSTNRO.........",
..
..
x-ms-client-principal: "eyJhdXRoX3R5cCI6ImFhZCIsImNsYWltcyI6W3sidHlwIjoiYXVkI..........",
x-ms-client-principal-id: "588301bd-048a-XXXX-XXXX-XXXX-XXXX",
x-ms-client-principal-idp: "aad",
x-ms-client-principal-name: "me@example.com",
..

针对这些请求头,以下是相关疑问的解答:

1. 上述authorization(Bearer)令牌的具体用途是什么?

这个Bearer令牌是SPFx Web部件用来验证自身有权限调用Azure Function的凭证,本质是AAD颁发给SPFx应用的访问令牌。它的核心作用是让Azure Function确认请求来自经过授权的SPFx应用,同时附带了当前登录用户的身份信息,但令牌的受众(audience)是你的Azure Function,而非其他服务。

2. 该authorization(Bearer)令牌是否为delegated token?能否以登录用户的有效令牌身份,用于调用Microsoft Graph的delegated接口(如https://graph.microsoft.com/v1.0/me)?

它属于委托令牌,但不能直接用来调用Microsoft Graph的委托接口。原因有两点:一是这个令牌的受众(aud字段)是你的Azure Function,而非Microsoft Graph,Graph服务会校验令牌受众,不匹配会直接拒绝请求;二是令牌内的权限范围(scp字段)仅针对Azure Function,不包含任何Microsoft Graph相关的权限。

3. 若问题2答案为否,上述AAD转发的用户令牌/主体中,哪一个可用于调用Microsoft Graph的delegated接口?

x-ms-client-principal是经过Base64编码的用户主体信息,但它不是可直接使用的访问令牌。你需要在Azure Function中,基于这个用户主体信息,通过AAD的On-Behalf-Of(OBO)流程,向AAD申请针对Microsoft Graph的委托访问令牌。执行这个流程需要你的Azure Function提前配置好对应的权限,申请时要带上原SPFx的Bearer令牌以及所需的Graph权限范围。

4. 若上述令牌/主体均无法用于delegated调用,是否意味着从Azure Function调用Microsoft Graph只能采用application permissions方式?

不是的。除了应用权限(application permissions),你可以通过On-Behalf-Of(OBO)流程获取用户委托的Graph令牌,以此以登录用户的身份调用Graph的委托接口。应用权限是用Azure Function自身的身份发起调用,无需用户上下文;而OBO流程则是借用当前登录用户的身份,要求用户已经完成登录并授权过相关权限。


内容的提问来源于stack exchange,提问作者夏期劇場

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:30:45