如何限制每个用户或组在Azure API管理(APIM)中使用操作

时间:2018-09-04 19:57:16

标签: api azure azure-api-management

如果您可以帮助我解决以下问题,我将不胜感激:我正在限制使用组中APIM中使用API​​的访问权限,但是我想甚至限制其操作,例如:我有一个API APIM具有以下操作:

  • OperationA
  • OperationB
  • OperationC

以及以下用户组:

  • Group1
  • Group2
  • Group3

因此,想法是根据某些业务规则授予对这些组的访问权限:

  • Group1(操作A,操作B)
  • Group2(OperationA)
  • 第2组(操作A,操作B,操作C)。

是否有实现此行为的方法?非常感谢

2 个答案:

答案 0 :(得分:2)

仅可通过策略表达式来实现。使用选择策略并检查当前用户是(context.User.Groups)的成员的组,如果看不到所需的组,请使用return-response停止请求处理。

答案 1 :(得分:0)

在操作入站策略中,您可以添加以下内容:

<choose>
    <when condition="@(context.User.Groups.Contains(g => g.name == "Group1"))">
         <return-response>
              <set-status code="403" reason="Unauthorized" />
              <set-body>Users in group Group1 do not have access to this method. </set-body>
         </return-response>
    </when>
</choose>

这些是我参考以得出此结果的文档片段:

这将使所有属于Group1的用户都收到响应“ Group1中的用户无权使用此方法”。每当他们向该API操作发出请求时。如果将此添加到API的入站策略中,则Group1中的用户将无法调用该API中的任何操作。