gpt4 book ai didi

azure - 应用程序在 "app calls api"场景中两次请求同意

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

我正在使用两个应用程序注册并实现“公开 api”场景。我的 CLIENT_APP 是一个使用 msal-Angular 库的 Angular 应用程序。我的 SERVER_APP 是一个 .NET 服务器,它使用“公开 API”功能并定义范围。它还将 CLIENT_APP 列为受信任的客户端应用程序。

CLIENT_APP 实际上正在执行系统中的大部分繁重工作,它使用 Directory.read.all 直接访问 Azure AD。 SERVER_APP 提供设置 API,只对了解用户身份感兴趣。

我的问题是,在进行初始注册时,系统会要求用户同意CLIENT_APP“查看个人资料”和“维护访问权限”。没关系,但在我调用服务器 API 来获取设置后,我立即收到另一个同意窗口,再次询问 CLIENT_APP 的权限 - “查看个人资料”和“维护访问权限”。然而,窗口中有一段话:“如果您接受,SERVER_APP 还将有权访问您的用户个人资料信息。”

有没有一种方法可以一步完成这一同意事情?感觉这是一种非常困惑的用户体验(尤其是第一次登录时)

最佳答案

我尝试在我的环境中重现相同的结果,并得到如下结果:

我创建了一个 Azure AD 客户端应用并添加了 API 权限:

enter image description here

我创建了一个 Azure AD 服务器应用并公开了如下 API:

enter image description here

Note that: It is inappropriate to get consent screen twice. The user must get the consent screen only once.

对于示例,我尝试使用以下端点授权用户:

https://login.microsoftonline.com/TenantID/oauth2/v2.0/authorize?
&client_id=ClientID
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope=api://AppID/test.read Directory.Read.All
&state=12345

当我尝试使用用户帐户登录时,我得到了一次同意,如下所示:

enter image description here

同意后,用户成功重定向到重定向页面,如下所示:

enter image description here

如果问题仍然存在,请尝试以下操作:

  • 为客户端应用和服务器应用配置相同的 API 权限并尝试。
  • 另一种方法是您可以为 Microsoft Graph 生成访问 token 并使用访问 token 获取用户个人资料,如下所示:
https://graph.microsoft.com/v1.0/users/UserID

enter image description here

  • 无法同时调用两个 API。
  • 尝试使用一个 Azure AD 应用来授权用户。
  • 您还可以使用On-Behalf Flow来解决问题。

关于azure - 应用程序在 "app calls api"场景中两次请求同意,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75629737/

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