Azure RBAC:REST API对于未授权的请求返回空响应

时间:2019-06-24 17:28:01

标签: azure

通过对Azure REST API的试验,我发现以下情况:未经授权的请求的响应中包含200个代码且响应为空:

{
    "value": []
}

具体来说,我已经观察到两种情况,两种情况都是使用通过有效承载令牌进行身份验证的客户端应用程序发生的:

  1. 如果没有为客户端分配角色,则对任何需要显式访问的API的请求均会按预期返回403错误代码。
  2. 如果客户端分配的角色未授权访问端点,则会返回200响应,其中包含有效载荷。

关于第二种情况,我希望该请求仍将返回403错误代码,因为鉴于所分配的角色,访问是未经授权的。

这是预期的行为吗?


具体来说,我已经通过将Network Contributor role分配给应用程序并尝试了允许的操作之外的各种GET操作,对上述第二种情况进行了测试。对于所有未经授权的访问,将返回空的value属性。当我使用Reader角色测试相同的端点时,将填充value属性。

1 个答案:

答案 0 :(得分:0)

这是我从Microsoft收到的关于以下主题的答案:

  

对于返回以下内容的API,应该看到您所看到的行为:   资源集合,其原因是权限   会根据资源进行评估,因此只有您拥有的资源   权限被返回。

     

这是我们处理请求的方式:

     
      
  1. 我们会验证拨打电话的用户的权限,如果没有权限,则会返回未经授权的错误。

  2.   
  3. 然后将API调用发送到资源提供者进行处理,在这种情况下,我们要求完整的资源集合。

  4.   
  5. 然后根据用户所拥有的权限过滤从资源提供者返回的结果。

  6.   
  7. 过滤后的结果返回给用户。 (如果所有内容都被过滤掉,则响应将为空)。

  8.   
     

我了解这可能会造成混淆,在这种情况下,列表API是   不限于用户,我们限制返回的结果   响应,这就是为什么200 OK带有空数组是正确的原因   对您与我们分享的方案的回应。