gpt4 book ai didi

azure - 使用 Postman 和 .Net 6 Web Api 时不显示用户同意屏幕

转载 作者:行者123 更新时间:2023-12-02 06:12:16 24 4
gpt4 key购买 nike

因此,我正在编写一个 .NET 6 Core Web Api,使用 Azure AD 作为 API 的身份验证。

现在,以图形 API 为例,您需要在应用程序注册中设置图形 API 范围。让我们在本示例中使用委托(delegate)的“user.read”权限。

我使用 Postman 通过针对 API 的 Azure AD 进行用户身份验证来接收应用程序的访问 token 。我希望收到一个同意屏幕,这样我就可以同意使用“user.read”。但这并没有发生。我登录并收到有效的访问 token 。但在后端,它会抛出错误,因为用户/管理员不同意该应用程序。

我该如何解决这个问题?为什么系统不要求我同意应用程序注册中设置的权限?既不在 Postman 中,也不在 Swagger oAuth Flow 中..

我当前的解决方法是使用 React 应用程序并通过前端应用程序登录。使用前端应用程序时,系统会要求我同意权限。同意后,我可以使用 postman 而不会收到“用户不同意”错误。

有什么想法吗?我错过了什么?

最佳答案

让我们首先关注用户同意页面。当我们创建一个azure ad应用程序然后为其添加api权限,然后使用这个azure ad应用程序使您的.net 6 app/react应用程序集成azure ad以使用azure身份验证,我们就进入microsoft登录页面并成功登录在中,我们将看到一个对话框,表明此应用程序需要您同意权限列表。这些权限与您为 aad 应用程序设置的 api 权限相对应。同意一次后,下次登录时不会再要求您同意。

enter image description here

此同意仅在用户登录时发生。让我们回到用于在 Azure AD 中生成访问 token 的流程。既然您使用了委托(delegate)权限,那么您可以使用推荐Auth code flow (另一个名为 ROPC flow 的流程也可以生成委托(delegate)访问 token ,但不推荐)。当我们使用验证码流程时,我们需要先登录,登录网址应如下所示:

https://login.microsoftonline.com/tenant.onmicrosoft.com/oauth2/v2.0/authorize?client_id=azure_ad_app_id
&response_type=code
&redirect_uri=http://localhost/myapp/
&response_mode=query
&scope=user.read
&state=12345

我们需要使用它来获取身份验证代码,然后我们可以使用该代码生成访问 token ,根据我的测试,我创建了一个新的 azure 广告应用程序,当我直接在浏览器中点击此网址并登录时,它仍然需要我的同意。所以恐怕你在post man中测试时没有看到对话框的原因是你在react应用程序中测试时同意了它,或者你没有使用auth代码流。

关于azure - 使用 Postman 和 .Net 6 Web Api 时不显示用户同意屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73821273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com