azure - 是否可以使用自定义受众访问 microsoft graph?

标签 azure azure-active-directory microsoft-graph-api

我有一个使用 Azure AD 提供对资源的访问的 API。它具有一个范围 api://{client_id}/Api.Read 和以下 API 权限: 用户.阅读.全部, 用户.阅读。

当我从 AD 收到访问 token 时,它只有一个 aud - {client_id} ,并且当我尝试访问 Microsoft graph 时(例如 https://graph.microsoft.com/v1.0/me) 我收到“访问 token 验证失败。受众无效。”响应符合预期。

我的问题是 - 是否可以使用一个 token 访问图形 API 和我的 API 以及如何实现?

最佳答案

我正在使用代表调用将当前 token 交换为“正确的” token :https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow

基本上,您只需进行以下调用(从上面的链接复制):

POST /oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com/<YOUR_TENANT>
Content-Type: application/x-www-form-urlencoded

grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
&requested_token_use=on_behalf_of
&client_id=<YOUR_CLIENT_ID>
&client_secret=<YOUR_CLIENT_SECRET>
&assertion=<YOUR_CURRENT_TOKEN>
&scope=<YOUR_NEW_SCOPES>

响应包含用于访问范围内请求的资源的新 token 。我的情况不完全是您的情况,但我认为这也适合您的情况。您需要在服务器端进行此调用。

这假设用户已经同意您的应用程序可以使用,否则此调用将导致“interaction_required”或“invalid_grant”错误(类似这样,不记得确切的错误名称)这基本上意味着您需要引发 UI 提示以让用户同意新范围(如何做到这一点是另一个问题)

关于azure - 是否可以使用自定义受众访问 microsoft graph?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74114624/

相关文章:

azure - 通过 Graph API 邀请的 Azure AD B2C 用户在接受邀请后如何注册?

Android、Microsoft Graph API - 网络无法访问

javascript - 如何将 json 响应中的二进制图像保存到 S3 存储桶

azure - 从 ARM 模板设置 Azure 应用程序配置中的值

c# - Azure 离线同步。无法添加项目 "Query execution failed with result: ' MISMATCH'。”

c# - 我正在尝试在 C# 应用程序上运行一些 powershell 脚本以授予对 Azure AD 应用程序的权限,它适用于 Powershell,但不适用于 C# 应用程序

azure-active-directory - Azure AD B2C - 用户类型 'Guest' 或 'Member'

azure - 使用 Azure Graph API 检索个人资料图片信息

azure - 如何在 VSTS 中每次部署之前清理目标 Azure 网站 Windows Server 上的 wwwroot 文件夹

powershell - 用于复制所有 Web 应用程序设置的 Azure Runbook powershell 脚本