【发布时间】:2019-12-13 15:51:15
【问题描述】:
我们正在 azure 虚拟机上开发一个应用程序,VM 安装了 ngnix 和 TLS 1.2 版。该应用程序由执行 salesforce 和 office365 oauth 流程的两个操作组成。该应用在本地和 Azure 应用服务上也运行良好。
问题
出于某种原因,我们正在将应用移至 azure VM。这是问题所在,在 oauth 之后流程返回一个代码,我们需要通过对 office365 端点的 https 请求使用该代码生成 access_token。端点响应是超时或错误读取 ECONNRESET。
分析
唯一有效的 URL,
- http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net
- https://myapp.vault.azure.net/secrets/{Secret-Name}?api-version=2016-10-01
以上都用于获取访问令牌和密钥库机密。幸运的是,这工作得很好,我能够从 azure key vault 中获取所有秘密。
但以下网址要么没有响应超时,要么错误:读取 ECONNRESET
- https://login.microsoftonline.com/{Tenant-Id}/oauth2/v2.0/token
- https://test.salesforce.com/services/oauth2/token
我也尝试过其他公共或虚假的 rest API,例如,
他们似乎都没有工作。有人遇到过这种问题吗?
【问题讨论】:
-
您在该 VM 上是否有 Internet 连接?你的本地fireall没有阻止传出连接吗?连接重置通常意味着防火墙正在阻止连接。你是如何配置虚拟网络的?任何UDR(用户定义的路由)? NSG(网络安全组)? NVA(网络虚拟设备)?您的问题似乎是虚拟机/网络本身的网络配置。从而删除 AAD 标记。
-
您的 VM 的 NSG 是否允许传入流量?
-
当您检查 Azure VM 内的 NSG 或本地防火墙时,是否有任何防火墙阻止了端口 443 到 Internet 的出站流量?
-
如何通过url“login.microsoftonline.com{Tenant-Id}/oauth2/v2.0/token”获取访问令牌?您使用哪个系统? Windows 还是 Linux?
-
@astaykov 这是因为防火墙设置发生了一些变化。现在可以用了,谢谢!
标签: azure nginx azure-web-app-service azure-virtual-machine