【发布时间】:2020-06-23 11:46:05
【问题描述】:
我有一个非常愚蠢的问题,但我工作的环境迫使我使用这个解决方案。
- 我们有一个向 Angular 前端提供数据的 WebAPI。
- 我们使用 Azure AD B2C 租户进行身份验证。
- 用户登录前端并开始正常接收来自 API 的数据。
但是:用户必须在 Azure AD 中获取有关组的不同数据。所以例如UserA 在 GroupB 中,必须获取 GroupY 中的 UserX 以外的其他数据。
因此,在 api 中,我需要验证用户是否在他们请求的数据的组中。 通常我会使用 Microsoft.Graph 从 API 与 Azure 进行通信。但由于这是一个特殊的网络,我需要使用不同的用户代理通过代理。当我从可执行文件调用我的代码时,这一切正常。 但是当我在 API 中调用相同的方法时,我得到一个超时并且没有来自 Azure 的数据。我用其他 API 测试了相同的例程,没有超时。
我已经检查了请求标头以确认没有混淆信息或任何东西,但一切看起来都应该是这样的。
在为 API 创建请求令牌时,有没有人遇到过类似的问题,或者有关于 User-Agent 的解决方案?
谢谢!
干杯!
【问题讨论】:
-
我建议在执行从 API 到 Azure 的调用时调试代码。检查是否有任何可以描述您的问题的描述性内容,这可能是响应或其他任何内容。您提到它正在处理一个可执行文件,该 api 是否与您的可执行文件在同一网络上运行?执行网络测试以检查您的 api 服务器是否可以访问 azure。我不是这些技术方面的专家,但这些都是需要根据场景来考虑的事情。
-
嗨,是的,代码在同一台机器上运行。可执行文件已添加到解决方案中并设置为启动项目。一旦达到 HttpResponseMessage response = await httpClient.PostAsync(url, content);我可以等待 30 秒然后发出咔哒声 -> 超时
-
您是否尝试在与 azure 通信时在代码上设置断点?先调试一下。
-
是的。我试过了。在发送请求时,我可以等待 30 秒以接收超时响应。在 Async 中,也有一个空返回。