401通过APIM调用Azure服务时未经授权

时间:2017-06-29 01:53:15

标签: azure asp.net-web-api azure-api-management

我在Azure中有一个Web服务,不能通过其azurewebsites.net端点调用,而只能通过我们公司的端点api.ourcompany.net(不是真实的域名)来调用。

我通过在web.config中将Azure APIM的IP地址列入白名单来保护Web服务,就像这样(实际IP未显示):

  <ipSecurity allowUnlisted="false" denyAction="Unauthorized">
    <!--This is for api.ourcompany.net -->
    <add allowed="true" ipAddress=“aaa.bbb.ccc.ddd” subnetMask="255.255.255.0"/>
  </ipSecurity>

这很好用。

该服务由iPad应用程序调用。该应用必须在Bearer标头中提供Authorization令牌。该令牌是OAuth / JWT令牌,用户通过该应用程序登录我们公司的登录页面获得。

这有时很好,并且在其他时间产生401 Unauthorized。我确信令牌在所有情况下都有效,而且应用程序正在正确发送令牌。

尽管我从故障排除中可以看出,当用户连接到公司WiFi网络或使用带有LTE的移动设备时,令牌仍可正常工作。当用户连接到另一个WiFi网络时,它会失败。在切换网络时,它似乎也表现得不正常

我关闭了白名单,问题似乎消失了。

我的问题是,在使用Bearer令牌时,如何将我的服务列入白名单或以其他方式保护?

1 个答案:

答案 0 :(得分:0)

事实证明我们有两个APIM实例,我只将其中一个列入白名单。我所拥有的清单是从2年前部署的项目中复制而来的,去年增加了另一个APIM实例。令人惊讶的是,如此小的事情如此难以排除故障。