gpt4 book ai didi

oauth-2.0 - 如何使用相同的 OAuth2 token 访问 Azure Graph 和 Microsoft Graph?

转载 作者:行者123 更新时间:2023-12-03 23:18:03 25 4
gpt4 key购买 nike

我想使用相同的 OAuth2 token (在 iOS 的 Swift 3 应用程序中)访问 Azure AD Graph API 和 Microsoft Graph API - 这可能吗?

我想访问以下 API:

  • Azure AD 图形 API
  • API:https://graph.windows.net/myorganization/users/delta
  • 范围:https://graph.windows.net/Directory.AccessAsUser.All
  • 微软图形
  • API:https://graph.microsoft.com/v1.0/users
  • 范围:https://graph.microsoft.com/User.ReadBasic.All

  • 我在 Azure 门户中创建了一个 native 应用程序,并为 Microsoft Graph 和 Microsoft.Azure.ActiveDirectory 添加了权限(具有上述权限范围)。

    我可以通过 访问这两个 API只有身份验证时(登录时)更改资源属性 - Azure 配置似乎正确。但是,在使用第一个资源进行身份验证时,尝试使用相同的 token 访问其他 API 时出现“未经授权”错误。我尝试将两个 URL 添加到资源属性,但随后出现错误(“AADSTS50001:在租户中找不到应用程序名称。”)。我做错了什么或我错过了什么......?

    如果不可能 - 为什么可以在 Azure 门户中添加多个 API?

    访问这两个 API 的原因:Microsoft Graph 没有给我所有属性(但支持增量更改),Azure AD Graph 给了我完整的配置文件 - 两者都未经管理员同意(使用委派权限)

    最佳答案

    您不能使用相同的访问 token 从字面上调用这两个 API。因为访问 token 具有特定的受众,并且当受众声明与其自己的应用 ID URI 不匹配时,其中一个 API 将拒绝该 token 。

    看起来您真正想要完成的是使用一次登录体验获得两个 token ,您可以做到这一点。

    使用授权代码授予流程,您可以让用户登录而无需指定资源。用户将获得 AAD 和 MS Graph API 权限的同意,并且您的应用程序将在登录完成后取回身份验证代码。

    此时,您的应用程序可以使用相同的授权代码两次调用 token 端点,以获得两个端点的两个访问 token 。从那里,您可以管理两个 token 并同时保持对两个 API 的访问。

    我在我的 Python 示例之一中执行此操作 here ,除了我的两个端点是 AAD Graph API 和 Azure 资源管理器。

    关于oauth-2.0 - 如何使用相同的 OAuth2 token 访问 Azure Graph 和 Microsoft Graph?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45438921/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com