用于调用 Office 365 和 Graph API REST 的 Azure AD 身份验证

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

我使用 VS 2015 创建了一个示例 MVC 应用程序并使用了 Azure AD 身份验证向导。当我启动此 Web 应用程序时,它要求我向 Azure AD 注册应用程序(仅限第一次),然后输入用户 ID/密码。我已输入 Office 365/Azure AD 帐户并成功登录。一切正常,在右上角,我可以看到 Hello“myname”。

现在我尝试使用 RestSharp 对 Office 365 进行 REST 调用。它给我403错误(访问被拒绝)

当我尝试使用图形 api url https://graph.windows.net/testname.com/groups?api-version=1.6 时,出现错误未经授权的访问.

这是我的图形 API 调用的测试代码:

 string url = "https://graph.windows.net/testname.com/groups?api-version=1.6";
            var client = new RestClient(url);
            client.ClearHandlers();
            var jsonDeserializer = new JsonDeserializer();
            client.AddHandler("application/json", jsonDeserializer);
            var request = new RestRequest(Method.GET);
            var queryResult = client.Execute(request);

我使用与 O365 REST url 相同的代码进行 Office 365 调用。

如果我的应用程序已经根据 Azure AD(基本身份验证)进行了身份验证,为什么我在这两种情况下都会被拒绝访问。另外 Request.IsAuthenticated 始终为 true。

Azure、Office 365 和相关资源不是使用单一身份提供商 (AAD) 吗?

最佳答案

您的应用可能未配置为调用图形的 /groups 端点。当最终用户经过身份验证并且您已获得 Azure AD Graph (graph.windows.net) 的 token 时,此访问 token 需要具有一组特定的权限才能调用终结点。

要配置这些图形权限,您可以转到 Azure Portal ,选择Azure Active Directory,然后应用注册,最后所需权限。您调用的资源是 Windows Azure Active Directory,然后您可以在范围列表中查找您想要调用的资源。

我推荐的另一个很棒的资源是 Azure AD Graph Explorer。这可以帮助理解图表可以提供的数据类型。

编辑:查看评论以获取答案。 OP 使用了 OpenID Connect 中间件 (OWIN),需要帮助获取资源的访问 token 。为此,您必须结合使用 OWIN + ADAL。 OWIN 获取身份验证代码,ADAL 可以将此身份验证代码交换为访问 token 。

关于用于调用 Office 365 和 Graph API REST 的 Azure AD 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45174325/

相关文章:

azure - 是否可以通过 REST API 列出 Azure 中的所有数据库

azure - Azure Data Lake 是否支持文件版本控制?

c# - 在一台 Mac 上输入电子邮件后,Azure AD 登录空白页面,在另一台上工作吗?

azure - 使用 Azure 托管服务标识来扩展应用服务计划,但未列出

azure - 存储来自 Azure Function 的访问 token

git - 将 Visual Studio Online 设置为持续部署 : There are no projects available

authentication - Azure 应用服务身份验证的 HttpContext 用户为空

oauth - Active Directory 身份验证库编程 SSO

xml - 使用自定义策略在Azure AD B2C中添加用户

c# - 如何使用 CSP 全局管理员凭据在 Azure AD 中为我的租户注册应用程序?