我有一个 api,假设有 100 个操作。我已经创建了开发者门户。我的要求是 100 次操作,用户 A 只能查看 GET 操作,用户 B 登录后只能在开发者门户中查看 PUT 和 POST 操作。
我正在使用用户名和密码身份。
请帮忙解决这个问题。我尝试过政策但没有帮助。
事实上,这不能像门户网站那样完成。
您可以在 API 管理中设置 API 两次。一次仅用于 GET 操作,一次用于 POST 操作。您将拥有两个可以授予访问权限的不同 API。
有一种解决方法可以通过每个操作的策略来完成此操作。到目前为止,这是我能做到这一点的唯一方法。然而,当与大量用户打交道时,这是不可行的。
<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>