我有一个托管在 Azure 应用服务中的后端 API。 我想使用 Azure API 管理作为此后端 API 的前端,并已在 Azure 中成功配置了此管理。 我已将 API 管理配置为在访问此后端 API 时使用 OAuth,当客户端通过 Azure API 管理终结点访问 API 时,该 API 管理有效,但如何防止用户直接访问后端 API 终结点,以便仅允许来自 API 管理终结点的调用?
有几个不同安全级别的选项:
- 共享密钥 - 在 APIM 中设置具有特定值的特定标头,并在后端检查该值。
- 托管标识 - 可以在 APIM 服务中启用托管标识,并将其令牌发送到后端,以便能够对其进行验证。 IP
- 筛选器 - 在后端检查 APIM IP 作为源。
- 客户端证书身份验证 - 将客户端证书身份验证上传到 APIM,并将其附加到后端的每个请求。在后端检查该证书。
- VNET - 将 APIM 和后端放入同一 VNET 中,并阻止从外部到后端的访问。
我个人使用IP限制取得了巨大的成功。 APIM 被赋予一个静态 IP,因此您可以在"根 API"中设置仅允许 APIM 调用的 IP 限制。 如果直接调用根 API,则会导致 403。
如果您不希望 403 来自根 API,则可以使用策略来更改它,或者您可以在 APIM 级别设置身份验证,您将在点击该 403 之前获得 401。