【问题标题】:Azure RBAC: REST API returns empty response for unauthorized requestAzure RBAC:REST API 对未经授权的请求返回空响应
【发布时间】:2019-06-24 17:28:01
【问题描述】:

通过对 Azure REST API 的试验,我发现对未经授权的请求的响应具有 200 代码且响应为空的情况:

{
    "value": []
}

具体来说,我观察到了两种情况,两种情况都发生在使用有效不记名令牌进行身份验证的客户端应用程序中:

  1. 如果客户端没有分配任何角色,对任何需要显式访问的 API 的请求都会按预期返回 403 错误代码。
  2. 如果客户端分配的角色未授权正在访问的端点,则返回带有空负载的 200 响应。

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

这是预期的行为吗?


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

【问题讨论】:

标签: azure


【解决方案1】:

这是我从 Microsoft 收到的关于该主题的回答:

您看到的行为是返回 收集资源,原因是权限 按资源评估,因此只有您拥有的资源 权限被返回。

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-22
    • 2021-04-26
    • 2016-06-18
    • 1970-01-01
    • 2012-12-04
    • 2020-10-10
    • 2017-10-16
    • 2018-12-31
    相关资源
    最近更新 更多