当前位置: 首页 > 知识库问答 >
问题:

调用Office 365和图形API REST的Azure AD身份验证

佟阳云
2023-03-14

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

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

当我试图使用图api urlhttps://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);

我正在将相同的代码与 Office 365 调用的 O365 REST 网址一起使用。

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

单个标识提供者 (AAD) 不是用于 Azure、Office 365 和相关资源吗?

共有1个答案

郎项禹
2023-03-14

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

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

推荐的另一个很棒的资源是Azure广告图表浏览器。这有助于理解图表可以提供的数据类型。

编辑:检查答案的注释。OP使用了OpenID Connect中间件(OWIN),需要帮助获取资源的访问令牌。为了做到这一点,您必须使用OWIN ADAL的组合。OWIN获取身份验证代码,ADAL可以将此身份验证代码交换为访问令牌。

 类似资料:
  • 我们使用 EWS 托管服务已经有一段时间了,但我们希望过渡到使用 Office 365 的 RESTful API。 应用程序是否可以在未经用户同意的情况下访问我们所有的用户数据?我们有一个内部应用程序,我们希望将一些O365/Sharepoint数据提供给我们的用户。使用SSO并不是一个真正的选择,因为我们不想一直要求我们的用户给予同意(我们假设他们已经给予同意)。具体来说,我们想要访问日历和邮

  • 我能够在没有用户的情况下使用Get access从Microsoft Graph访问资源。但是,这个方法不允许我访问需要委派权限的资源。 我还尝试使用代表用户获取访问权限方法,但它需要我的用户通过网页登录,这在我的方案中是不需要的。 是否可以生成一个使用寿命长(可能超过一年)的授权代码,并使用该代码请求访问令牌,然后使用该令牌获取需要授权权限的资源? 注意:我知道生成具有这么长生命周期的授权代码不

  • 我用.NET Framework 4.7.2 asp.net mvc项目。现在,我将 Swagger nuget 包(Install-Package Swashbuckle -Version 5.6.0)添加到了这个现有项目中。帖子,我看到一个 SwaggerConfig.cs添加到解决方案资源管理器的 App_Start 文件夹。 在这里,指向服务器的应用程序使用 asp.net mvc 控制器

  • 问题内容: 确保GWT + Tomcat应用程序执行身份验证和授权的最佳策略是什么? 问题答案: 有两种基本策略: 确保入口点; 保护远程服务。 最简单的方法是使用常规的Web应用程序安全工具来限制对GWT生成的html / js文件的访问: 春季安全; web.xml约束。 这样可以让您拥有eg 和。 保护远程服务 如果上述解决方案还不够,您可以进行更深入的研究。我已经通过Spring Secu

  • 我试图为AWS实现“开发人员身份验证身份”,如下所示:https://AWS.amazon.com/blogs/mobile/amazon-cognito-innecling-developer-authenticated-identities/ 我很好地理解了基本流程。 我怎样才能做到这一点?

  • 我想知道socket.io身份验证的最佳实践是什么。 Alice发出事件'message',参数包括Bobs、唯一标识符等。Bob在监听Socket.on('message')事件时接收消息。