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

如何使用SAML 2.0断言获取Microsoft Graph API访问令牌?

能否用SAML 2.0断言获取Microsoft Graph访问令牌?

可以,但不能直接用SAML断言调用Graph API,得通过Azure AD的令牌交换流程来实现,具体步骤如下:

1. 先确认SAML断言的有效性

你的SAML断言得是Azure AD(或已和Azure AD建立联合信任的身份提供者)签发的,同时满足:

  • 包含用户的唯一标识(比如NameID或upn),且该用户在Azure AD中有对应账号
  • 断言未过期、签名有效
  • 断言的受众(aud声明)指向你的应用或Azure AD

2. 用SAML断言交换Graph访问令牌

通过Azure AD的OAuth 2.0令牌端点,提交SAML断言换取访问令牌,授权类型选urn:ietf:params:oauth:grant-type:saml2-bearer:

请求示例(POST请求)

POST /{tenant-id}/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:saml2-bearer
&client_id={你的应用Azure AD客户端ID}
&client_secret={你的应用客户端密钥}
&assertion={Base64编码的SAML 2.0断言内容}
&scope=https://graph.microsoft.com/SharePoint.Read.All
&requested_token_use=on_behalf_of
  • assertion:把SAML响应里的<saml:Assertion>节点内容做Base64编码后填入
  • requested_token_use=on_behalf_of:明确令牌用于代表已认证用户调用Graph API

3. 调用Graph API

拿到访问令牌后,在请求头里携带令牌即可调用SharePoint相关接口:

GET /v1.0/sites/{site-id}/lists HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer {获取到的Graph访问令牌}

关键注意事项

  • 你的.NET MVC应用必须在Azure AD中注册为服务主体,并且提前配置好Graph API的委派权限(需要用户同意)或应用权限
  • 要处理令牌过期问题,用返回的refresh_token可以刷新获取新的访问令牌
  • 如果你的SAML身份提供者不是Azure AD,得先让该IDP和Azure AD建立联合信任,否则Azure AD不会认可这个SAML断言

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:10:37