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

时间:2017-07-18 18:19:17

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

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

现在我尝试使用RestSharp对Office 365进行REST调用。它给了我403 error (access denied)

当我尝试使用图表api url https://graph.windows.net/testname.com/groups?api-version=1.6时,我收到错误unauthorized access

以下是我的图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总是如此。

不是用于Azure,Office 365和相关资源的单一身份提供程序(AAD)吗?

1 个答案:

答案 0 :(得分:1)

您的应用可能未配置为调用图表的/groups端点。虽然最终用户已通过身份验证,并且您已获得Azure AD Graph(graph.windows.net)的令牌,但此访问令牌需要具有一组调用端点的权限。

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

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

编辑: 结帐评论以获得答案。 OP使用了OpenID Connect中间件(OWIN),需要帮助获取资源的访问令牌。为此,您必须使用OWIN + ADAL的组合。 OWIN获取一个验证码,ADAL可以将此验证码替换为访问令牌。

相关问题