我使用VS 2015创建了一个示例MVC应用程序,并使用Azure AD Auth向导。当我启动这个web应用程序时,它要求我用Azure注册应用程序(第一次只注册),然后注册用户AD /密码。我已经输入Office 365/Azure AD帐户并成功登录。一切都很好,在右上角,我可以看到你好“我的名字”。
现在,我尝试使用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);对于Office365Call,我使用与O365 REST url相同的代码。
为什么在这两种情况下我都被拒绝访问,如果我的应用程序已经针对Azure进行了身份验证,这是基本的身份验证。而且,Request.IsAuthenticated总是正确的。
一个标识提供者(AAD)不是用于Azure、Office 365和相关资源吗?
发布于 2017-07-18 23:22:43
您的应用程序可能没有配置为调用图形的/groups端点。虽然最终用户是经过身份验证的,并且您已经获得了Azure AD图(graph.windows.net)的令牌,但是这个访问令牌需要有一定的权限才能调用端点。
要配置这些图形权限,您可以转到Azure门户,选择Active,然后是应用程序注册,最后是必需的权限。您调用的资源是Windows,然后可以查看要调用的范围列表。
我推荐的另一个很好的资源是Azure AD图资源管理器。这可以帮助理解图形可以提供的数据类型。
编辑:结账备注以获得答案。OP使用了OpenID连接中间件(OWIN),需要帮助获取资源的访问令牌。要做到这一点,必须使用OWIN + ADAL的组合。OWIN获得一个auth代码,ADAL可以将这个auth代码交换为一个访问令牌。
https://stackoverflow.com/questions/45174325
复制相似问题