Azure Api 管理限制用户操作级别

问题描述 投票:0回答:3

我有一个 api,假设有 100 个操作。我已经创建了开发者门户。我的要求是 100 次操作,用户 A 只能查看 GET 操作,用户 B 登录后只能在开发者门户中查看 PUT 和 POST 操作。

我正在使用用户名和密码身份。

请帮忙解决这个问题。我尝试过政策但没有帮助。

azure azure-api-management
3个回答
1
投票

事实上,这不能像门户网站那样完成。

您可以在 API 管理中设置 API 两次。一次仅用于 GET 操作,一次用于 POST 操作。您将拥有两个可以授予访问权限的不同 API。


1
投票

您无法在托管门户上执行此操作,因为较窄的订阅级别(范围)是 API/用户级别。您可以自行托管门户并实现您想要的目标,但这需要您做大量的工作。

enter image description here


0
投票

有一种解决方法可以通过每个操作的策略来完成此操作。到目前为止,这是我能做到这一点的唯一方法。然而,当与大量用户打交道时,这是不可行的。

<policies>
<inbound>
    <base />
    <choose>
        <when condition="@(context.User != null && context.User.Email != null)">
            <choose>
                <when condition="@(context.User.Email.Equals("[email protected]", StringComparison.OrdinalIgnoreCase))">
                    <set-variable name="emailAllowed" value="true" />
                </when>
                <otherwise>
                    <return-response>
                        <set-status code="401" reason="Unauthorized" />
                        <set-header name="WWW-Authenticate" exists-action="override">
                            <value>Bearer error="invalid_email"</value>
                        </set-header>
                        <set-body>{"error": "Unauthorized", "message": "User email not authorized to access this endpoint"}</set-body>
                    </return-response>
                </otherwise>
            </choose>
        </when>
        <otherwise>
            <return-response>
                <set-status code="401" reason="Unauthorized" />
                <set-header name="WWW-Authenticate" exists-action="override">
                    <value>Bearer error="invalid_token"</value>
                </set-header>
                <set-body>{"error": "Unauthorized", "message": "Subscription not linked to a user"}</set-body>
            </return-response>
        </otherwise>
    </choose>
</inbound>
<backend>
    <base />
</backend>
<outbound>
    <base />
</outbound>
<on-error>
    <base />
</on-error>
© www.soinside.com 2019 - 2024. All rights reserved.