如何访问Azure APIM策略中的Active Directory用户/组?

时间:2019-08-28 19:29:15

标签: azure-active-directory azure-api-management

我已将Azure Active Directory身份提供程序添加到我的APIM(从另一个租户中的AAD)。

我已使用它成功将Azure Active Directory组添加到我的APIM。

我现在要检查用户是否属于该组。

当我使用API​​M用户/组时,可以使用此策略进行检查,但是当我使用Active Directory时,此策略始终失败,并显示401。

<policies>
    <inbound>
        <choose>
            <when condition="@(context.User.Groups.Select(g => g.Name).Contains("org1"))">
                <set-backend-service base-url="https://abc-apim.azure-api.net/org1app" />
            </when>
            <when condition="@(context.User.Groups.Select(g => g.Name).Contains("org2"))">
                <set-backend-service base-url="https://abc-apim.azure-api.net/org2app" />
            </when>
            <otherwise>
                <return-response>
                    <set-status code="401" reason="Unauthorized" />
                    <set-header name="WWW-Authenticate" exists-action="override">
                        <value>Bearer error="Invalid user group"</value>
                    </set-header>
                </return-response>
            </otherwise>
        </choose>
        <base />
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

该策略应如何检查用户是否属于Active Directory中的组?

1 个答案:

答案 0 :(得分:0)

默认情况下,APIM不会拉入所有AAD组。有权访问APIM中的AAD组成员身份的唯一方法是将AAD组添加到APIM:https://docs.microsoft.com/bs-cyrl-ba/azure/api-management/api-management-howto-aad#add-an-external-azure-ad-group这样,您将在APIM组和AAD组之间创建映射。