【问题标题】:Sanity Check Microsoft Graph API and Generating OAuth Token from Postman健全性检查 Microsoft Graph API 并从 Postman 生成 OAuth 令牌
【发布时间】:2017-06-18 20:33:33
【问题描述】:

我正在针对Microsoft Graph API 进行编码,并且我正在尝试证明生成 OAuth 令牌的能力。我正在使用 Postman 并将我的应用程序托管在 Azure Active Directory 上。我在尝试传递正确的 Scopes 时遇到了 Postman 的问题 - 我正在尝试传递 User.read 但是,Postman 没有生成令牌。

我的设置:

授权网址:https://login.windows.net/{my_tenent}/oauth2/authorize

访问网址:https://login.windows.net/{my_tenent}/oauth2/token

范围:User.readAll

这些是要传入以生成 OAuth 令牌的正确值吗?

【问题讨论】:

    标签: c# azure oauth microsoft-graph-api


    【解决方案1】:

    您是否确保将您的应用程序设置为请求 Microsoft Graph 的权限?

    https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-integrating-applications

    “对其他应用程序的权限”部分。您必须静态选择希望应用程序调用 Microsoft Graph 的范围,除非您使用支持动态同意的 V2 端点。

    如果这有帮助,请告诉我!

    【讨论】:

      【解决方案2】:

      听起来您在这里混合了一些 v1 和 v2 端点。我写了一个Microsoft v2 Endpoint Primer 可能会帮助你。

      使用 v2 进行身份验证的 URI 应该是 https://login.microsoftonline.com/common/oauth2/v2.0/ 而不是 https://login.windows.net/{my_tenent}/oauth2/authorize

      使用 Graph 请求范围时,请务必使用完整的 URI,而不仅仅是范围名称本身。例如,user.read 应请求为 https://graph.microsoft.com/user.read。多个范围以空格分隔,因此请求user.readmail.read 将被格式化为"https://graph.microsoft.com/mail.read https://graph.microsoft.com/user.read

      如果您希望使用 v1 端点,则不要将范围请求为 OAUTH 工作流程的一部分。在 v1 中,注册应用程序时在 Azure Active Directory 中定义范围。

      如果您不确定要使用哪个,请查看Deciding between the Azure AD and Azure AD v2.0 endpoints。一般来说,我倾向于推荐 v2,因为它最终会取代旧的 v1 实现。但是,目前有一些较旧的 API(EWS、SfB 等)仅支持 v1,因此在某些情况下,您可以自行选择。

      【讨论】:

        【解决方案3】:

        我在同一个问题上纠结了将近一天,最后才弄明白。这些是适合我的设置:

        如果一切正常,您应该会在单击“请求令牌”时获得登录屏幕

        【讨论】:

        • 忽略 Scope 的原因是您正在调用较旧的 v1 端点。范围仅使用 v2 端点动态定义。
        猜你喜欢
        • 2017-06-10
        • 1970-01-01
        • 2023-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-04
        • 2017-04-29
        • 1970-01-01
        • 2021-04-26
        相关资源
        最近更新 更多