Azure API Management是一种云托管服务,可以在任何平台上为现有HTTP API添加许多功能。这包括与安全性,API密钥管理,缓存,文档和许多其他交叉策略相关的功能。有关详细信息,请参阅:http://azure.microsoft.com/apim
使用 C# 从 Azure Api 管理服务为自定义域绑定新证书
我尝试获取 APIM 客户端,我发现通过 apiManagement.Service.HostnameConfigurations 我可以获得一些有关自定义域内内容的信息,有关...的信息
Azure API 管理服务 - 与服务关联的 IP 未显示在 AMS 概述中
从这个问题开始: Azure API 管理服务中的静态 IP 地址 在 AMS 的概览边栏选项卡中列出了一个 IP 地址。 虚拟 IP (VIP) 地址:公共:xx.xxx.xx.xx 哈...
我想在 jwt.io 中生成您的 256 位秘密值 JWT.IO 秘密图像 我想在 API 管理策略中使用该密钥作为颁发者签名密钥。但我不知道如何创建该密钥。 请...
因此,在 Azure API 管理中,我创建了一个策略来缓存令牌并在访问实际 API 端点之前进行自我身份验证。我想知道是否有办法把这些政策...
问题看似简单,但即使过了几个小时也无法解决。 每次我创建 APIM 实例并在全局级别的入站策略中启用 CORS 策略时,我都会收到以下错误消息...
Azure API 管理 Rest api 获取所有订阅密钥并抛出 400 错误代码
我正在尝试获取与任何 APIM 产品关联的所有订阅密钥名称。谁能为我提供该请求的正确查询字符串? 卷曲--位置'https://gb-apim-dev.mana...
Azure API 管理从 Azure Functions 导入标签
我将 Azure-Functions 导入到 Api-Management。 我喜欢将标签添加到 Api-Management,这样我就可以对我的功能进行分组。 有没有办法在 C# 函数中添加标签,并将其添加到 Azure-Functions,然后我...
Terraform API 管理 API 政策 - 所有 API
我知道可以通过添加以下两个资源来使用 terraform 创建 API 管理 API 策略:API 管理 API 和 API 管理 API 策略。问题是我想要...
我正在使用 json 占位符 api 通过 APIm 测试 GET 请求,并且无法替换我的响应正文。任何帮助表示赞赏! JSON 响应: { “用户ID”:1, “id”:1, ...
我正在尝试创建一个代理应用程序来转发我的请求。 我将像这样使用它(适用于某些公共代理): var proxy = new WebProxy { 地址 = new Uri("proxyUrl") }; 变种
Azure APIM 中的 HTTP 到 HTTPS 重定向
HTTP 到 HTTPS 重定向。我们希望在 APIM 中将所有 HTTP 流量重定向到 HTTPS。我知道我们可以使用策略来重定向,这可以在 API 范围内实现吗?
我正在从 APIGEE 迁移到 Azure API 管理。我在 APIGEE 中有一些 JavaScript 策略。但我在策略参考索引中没有看到任何类型的脚本策略(https://learn.microsoft.com...
Azure APIM:受困于身份提供商和 AD B2C 自定义域
问题 我们成功使用 ADB2C 租户作为 Azure API 管理实例的身份提供者。 几个月前,我们借助 Azure Front Door 集成了 B2C 自定义域。我们...
Microsoft 的 Azure API 管理提取器工具不支持使用 Key Vault 值提取命名值
我正在使用微软的提取工具。最近,我们将一些命名值类型从秘密更改为密钥保管库。然而,当我们生成提取器工具时,它会删除命名值并忽略......
从 validate-jwt 迁移到 validate-azure-ad-token 策略
我之前已经在很多项目中成功使用了 validate-jwt 策略。我想尝试新的 validate-azure-ad-token 政策。 我更改了其中一项政策: <
当响应状态代码为 500 时,谁将活动 ID 添加到错误消息中?
我们从邮递员调用了我们的 APIM 端点。 不知何故,请求失败并给出 500 错误以及 Activityid 作为响应。 实际上,当我们从 APIM 进行测试时发生了什么......
Azure API Manager 上不同 API 密钥的不同调用限制
我了解我们可以通过订阅密钥对 APIM 进行调用限制,如下所示 我了解我们可以通过订阅密钥对 APIM 进行调用限制,如下 <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" /> 我有一个用例,我需要为不同的客户将我现有的 API 之一货币化。根据他们选择的计划,他们将能够在不同的限制下访问此 API。假设高级客户可以每分钟调用一次 api,而使用我的基本计划的客户可以每 10 分钟调用一次 api。 我正在寻找一种方法,对不同的 API 密钥有不同的速率限制。基本上是我需要配置的 API 密钥映射和相应的速率限制。因此,不同的客户端可以访问相同的 API,并且每个客户端都有自己的速率限制。 Azure APIM 中没有针对此问题的内置解决方案。 由于某些内部限制,调用将不支持表达式。 rate-limit-by-key calls 我已经通过对产品范围应用速率限制政策来解决这个问题。通过使用 when https://learn.microsoft.com/en-us/azure/api-management/api-management-advanced-policies#choose 所以我的入境政策会是这样的 <choose> <when condition="@(context.Subscription.Name=="abcd")"> <rate-limit-by-key calls="1" renewal-period="15" counter-key="@(context.Subscription.Id)" /> </when> <when condition="@(context.Subscription.Name=="efgh")"> <rate-limit-by-key calls="2" renewal-period="15" counter-key="@(context.Subscription.Id)" /> </when> <otherwise /> </choose> 对于您的用例,更好的选择可能是使用配额而不是速率限制。 “配额通常用于控制较长时间内的呼叫费率。例如,他们可以设置特定订阅者在给定月份内可以拨打的呼叫总数。为了使 API 货币化,还可以为不同的 API 设置不同的配额基于级别的订阅。例如,基本级别订阅每月可能拨打不超过 10,000 次呼叫,但高级级别订阅每月最多可拨打 100,000,000 次呼叫。” 来源:https://learn.microsoft.com/en-us/azure/api-management/api-management-sample-flexible-throtdling#rate-limits-and-quotas APIM文档看起来是通过为API配置多个APIM产品来实现分层访问的。这可以通过执行以下操作在 APIM 中进行配置: 从 API 中删除速率限制策略,因为这不允许不同的层级 将现有速率限制放入基本层产品并将其关联到 API 添加新产品 - 高级级别 需要订阅 需要批准 复制现有基本层产品上的任何自定义策略..任何自定义代码来执行身份验证等操作 将增加的费率限制/配额添加到高级产品的政策中 将高级层产品添加到所需的 API(可以将多个产品分配给一个 API) 为每个需要高级访问权限的 APIM 用户分配高级层产品订阅 让用户在其 API 调用中包含订阅密钥标头。他们的通话将通过高级产品并具有相关的限制和配额
我想根据请求正文中的 mailTo 属性对 Lime 进行评分。 这是 APIM 政策 我想根据请求正文中的 mailTo 属性对 Lime 进行评级。 这是 APIM 政策 <rate-limit-by-key calls="5" renewal-period="10" counter-key="@(context.Request.Body.As<JObject>()["mailTo"].ToString())" /> 这是请求正文 { "mailTo": "[email protected]" } 这对于直接调用后端来说效果很好,但在调用 APIM 时出现以下错误 { "errors": { "": [ "A non-empty request body is required." ] }, "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1", "title": "One or more validation errors occurred.", "status": 400, "traceId": "00-......-3be881755d918044-00" }` <rate-limit-by-key calls="5" renewal-period="10" counter-key="@(context.Request.Body.As<JObject>()["mailTo"].ToString())" /> 我使用了以下格式的相同策略,它按预期工作了 Policy <policies> <inbound> <base /> <rate-limit-by-key calls="5" renewal-period="10" counter-key="@(context.Request.Body.As<JObject>()["mailTo"].ToString())" /> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies> Test Result Trace 我想政策中有更多逻辑。 这个简单的策略不会产生上述错误: <policies> <inbound> <base /> <rate-limit-by-key calls="5" renewal-period="10" counter-key="@(context.Request.Body.As<JObject>()["mailTo"].ToString())" /> <return-response> <set-status code="200" reason="Ok" /> <set-body>{ "message": "It's fine!" }</set-body> </return-response> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies> 但我猜想请求正文在策略中至少使用了两次。 因此,您必须将参数 preserveContent 设置为 true: context.Request.Body.As<JObject>(true)["mailTo"].ToString() https://learn.microsoft.com/en-us/azure/api-management/api-management-policy-expressions 为了避免这种情况并让该方法对主体流的副本进行操作,请将preserveContent参数设置为true 两次使用请求的策略: <policies> <inbound> <base /> <rate-limit-by-key calls="5" renewal-period="10" counter-key="@(context.Request.Body.As<JObject>(true)["mailTo"].ToString())" /> <set-variable name="email" value="@(context.Request.Body.As<JObject>(true)["mailTo"]?.ToString().ToLower())" /> <return-response> <set-body template="none">@{ var jsonResponse = new JObject(); jsonResponse.Add(new JProperty("message", (string)context.Variables["email"])); return jsonResponse.ToString(); }</set-body> </return-response> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies>
如何使用Azure API Managment进行loadbance?
可以使用Azure API Management来实现负载均衡吗?我想自动将对 API 管理中某个 API 的客户端调用分发到后台中的多个不同的 Web API 服务...
我正在 Azure 中部署一个基础架构,其中有一个 API 管理实例。 问题是我必须时不时地统计一下到达 API 的请求,组...