Azure active directory 代表用户访问的授权请求将导致';cookiesDisabled';页

Azure active directory 代表用户访问的授权请求将导致';cookiesDisabled';页,azure-active-directory,httprequest,microsoft-graph-api,azure-logic-apps,azure-ad-graph-api,Azure Active Directory,Httprequest,Microsoft Graph Api,Azure Logic Apps,Azure Ad Graph Api,我正试图根据Microsoft上的相关文档执行授权请求(代表用户获取访问权限:)。我正在使用Azure的逻辑应用程序发出请求。我已经在Azure AD中注册了一个应用程序,并授予了它以下权限(我以前曾将该应用程序用于几个不同的请求,因此它包含许多不必要的api权限)。我已经成功地在没有用户的情况下访问()。现在我真的不知道我做错了什么,所以如果有人知道这是什么,请告诉我。我会尽量用截图仔细解释,让你们知道我在做什么 在下面的第一个屏幕上,您可以看到我添加到应用程序注册中的api权限。对于这个请求

我正试图根据Microsoft上的相关文档执行授权请求(代表用户获取访问权限:)。我正在使用Azure的逻辑应用程序发出请求。我已经在Azure AD中注册了一个应用程序,并授予了它以下权限(我以前曾将该应用程序用于几个不同的请求,因此它包含许多不必要的api权限)。我已经成功地在没有用户的情况下访问()。现在我真的不知道我做错了什么,所以如果有人知道这是什么,请告诉我。我会尽量用截图仔细解释,让你们知道我在做什么

在下面的第一个屏幕上,您可以看到我添加到应用程序注册中的api权限。对于这个请求,我只要求授权旁边有箭头的那个(稍后您将看到)

在第二个屏幕上,您可以看到我试图向授权端点发出的HTTP post请求。出于隐私原因,我模糊了房客和客户id。我只在正文中添加了Microsoft描述的必需参数。在scope参数中,您可以看到我请求权限的api权限

在第三个屏幕截图上,您可以看到请求的输出。我得到的不是请求的授权代码,而是HTML正文

当我将该HTML正文粘贴到浏览器中时,会得到以下结果:

我不知道我做错了什么。我检查了三次,以确保启用了cookie,确保未禁用第三方cookie,并将login.microsoftonline添加到我的受信任网站


我开始觉得我做错了一些很简单的事情,但我不知道到底是什么。欢迎任何帮助!:D

抱歉,无法添加评论,因此无法将其作为答案发布

您试图实现的是OAUTH 2.0的授权代码授权流。在授权代码授权流中,将执行以下步骤 1) 当用户访问某些资源时,会向其提供应用程序所需的作用域, 2) 用户对此进行授权。并且用户被重定向到重定向url 3) 然后,应用程序将发送的代码与重定向url交换,以获取实际令牌,在本例中,该令牌将被发送到Microsoft Graph进行验证。 4) 然后,用户会看到所拉取的信息


授权代码授权流的主要关键是“需要用户授权”,这基本上意味着当从用户实际交互的浏览器客户端调用调用时,将使用此流。此流不应通过Azure Logic应用程序。如果您希望服务或守护进程在这种情况下访问资源,则应使用客户端凭据授权流

这是正确的。您不能在逻辑应用程序中使用交互流。如果我没记错的话,您可以通过选择对HTTP请求块使用AAD身份验证来授权逻辑应用程序代表您行事。您还可以使用托管标识调用应用程序中没有凭据的API。但是,为托管标识分配权限的范围从easy到PowerShell不等。如果我理解正确(并且根据OAUTH 2.0授权框架,授权代码授予流的步骤4.1和客户端凭据授予流的步骤4.4:),我必须立即执行访问令牌请求吗?但这是否允许我使用委派的权限?因为我想尝试委派权限(我认为这等于这样做:)而不是应用程序权限(这样做:)。例如,如果我想使用此API:
https://graph.microsoft.com/v1.0/me/drive/root:/Test1/book.xlsx
,不知怎么的,它从来都不起作用,我在Azure上与之签名的用户与我在OneDrive上与之登录的用户相同。同时,这样做:
https://graph.microsoft.com/v1.0/users/8951924ub-65851-559ce5-585fefef/drive/root:/Test1/book.xlsx
,其中
/users
后面的Azure AD用户id是我登录的用户的用户id,因此与
/me
相同,工作非常正常。这是因为
/me
需要委托权限吗?您能在这里分享确切的要求吗?也许我们可以分享一个更合适的答案。我得到的任务是从当前用户(已登录用户)的OneDrive文件夹中的表中读取行,我不应该使用Microsoft制造的连接器,例如本例中的OneDrive连接器。所以我想要的是这个
https://graph.microsoft.com/v1.0/me/drive/root:/Test1/book.xlsx
HTTP GET请求首先返回xlsx文件的元数据。遗憾的是,我不知道如何才能使
/me
变得可用(在Logic应用程序中)。