问题标签 [azure-api-management]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1014 浏览

asp.net-web-api - 如何保护我的 WebAPI 免受滥用并避免共享 API 密钥?

我有一个用 C# 编写并托管在 Azure 中的 Web API,Azure API 管理 (AAM) 位于该 API 前面并限制请求。

调用 API 的客户端将基于 javascript,并将代表匿名最终用户进行调用。例如,网站的主页可能会通过 javascript 调用我们的 API 来向最终用户呈现信息,而无需要求他们登录。

AAM 确保 API 的调用者拥有有效的 API 密钥。如果有人从公开可见的来源获取此密钥,则该密钥有可能被复制和滥用。

是否可以在没有人工干预的情况下使用 OAuth2 获取 JWT 访问令牌并将其暴露在客户端上?

OAuth2 可以发出过期的 JSON Web 令牌,这将降低令牌被盗的风险,但我正在努力在没有任何人为干预的情况下实现这一目标。

OAuth2 主要是关于最终用户发起的授权,但 IdentityServer3 似乎有一种混合方法。我可以使用这种混合方法通过首先从服务器向服务器发送 API 密钥然后在网页中输出 JWT 以供客户端脚本使用来让远程 Web 服务器请求令牌吗?

然后,这将隐藏 API 密钥并仅显示使用几分钟的 JWT。

AAM 可以与 OAuth2 集成并检查 JWT 访问令牌,但我认为它不理解这个混合流(它可能不需要,因为我们不会要求用户登录)。

还是我应该只放弃和速率限制请求?

0 投票
1 回答
322 浏览

azure - 如何提高 azure 事件中心侦听器处理的速度?

我为 APIM 设置了一个 EventHub,并创建了一个侦听器 (IEventProcessor) 来捕获上下文策略输出。听者似乎每隔 10-15 秒就会受到一次打击。是否有任何方法可用于提高 IEventProcessor 处理事件的速度?是否有任何类型的设置可以更快地推送消息,或者这可以通过扩展侦听器以提高处理吞吐量来实现吗?

0 投票
1 回答
462 浏览

azure - 有什么理由在 apim 中使用出站策略?

是否有任何理由在 APIM 中使用出站策略?我尝试了一个测试,其中我对入站和出站使用了相同的策略表达式。相同的表达式可以正常工作,并为两者返回相同的信息。如果入站表达式已经捕获了所有信息,我认为不需要配置出站策略。您是否也发现出站部分是多余的,并简单地排除了出站部分?或者,除了入站部分之外,您是否找到了使用出站部分的任何理由?

0 投票
1 回答
195 浏览

azure - apim context.response.statusreason 可用性?

我将 context.Response.StatusReason 包含在我的 APIM 政策中。这正在填充错误。例如,404 错误将返回值“OperationNotFound”作为 context.Response.StatusReason。但是,对于 <inbound> 日志记录,我希望 StatusReason 值为“Success”,但它是空的。APIM 是否只为某些状态代码填充 StatusReason?

0 投票
3 回答
2291 浏览

azure-resource-manager - 如何以编程方式创建 API 管理服务?

我正在尝试以编程方式(如果可能,通过 Azure 资源管理器)在特定资源组中创建 APIM 服务。目标是我们可以拥有一个参数化的模板或脚本,并且可以检查到源代码控制中,以便我们可以复制和重新创建我们的环境。

ARM 文档页面中的此表显示Yes , Resource Manager is Enabled for APIM,但Quickstart Templates 链接找不到 Microsoft.ApiManagement 资源类型的示例模板。然而,这可能仅仅意味着还没有人向画廊贡献模板,而我必须自己编写模板。

至于编写我自己的 ARM 模板,指导您编写资源管理器模板的文章说:

要了解您需要了解的有关资源提供者的大部分内容,请参阅资源管理器提供者、区域、API 版本和模式

...它链接回与我上面的“此表”文本相同的页面。“创作模板”文章的同一部分还说:

[属性是] 资源特定的配置设置。属性的值与您在请求正文中为 REST API 操作(PUT 方法)提供的值完全相同,以创建资源。有关资源架构文档或 REST API 的链接,请参阅资源管理器提供程序、区域、API 版本和架构

...再次链接回与上述相同的页面。

我已经检查了APIM REST APIazure-resource-manager-schemas页面,以获取有关如何创建 APIM 实例的文档。

  • APIM REST API 要求您已经创建了 APIM 实例。它是为在 APIM 实例中操作 APIM 资源而设计的,而不是为了首先创建 APIM 实例。
  • ARM 架构项目不包含 Microsoft.ApiManagement 的架构。字符串“api management”和“apim”不会出现在 schemas 项目中。

是否可以以编程方式创建 API 管理服务,如果可以,如何创建?

0 投票
0 回答
409 浏览

azure - 如何获取 Microsoft Azure 的 API 凭据(用户身份验证和服务主体身份验证)?

我想编写一些代码来访问 Microsoft Azure。我已经通过管理控制台进行了广泛的挖掘,但仍然不清楚我如何生成访问 API 的凭据。

我已经搜索了控制台,但我迷路了。

下面的代码中显示了两种获取凭据的方法。如果有人可以逐步解释如何使用这些方法(用户身份验证和服务主体身份验证)中的每一种获取凭据,那就太好了。

以下代码来自此链接https://github.com/Azure/azure-sdk-for-node/issues/1606#issuecomment-181405138

0 投票
2 回答
167 浏览

azure - 使用 Azure API 管理中的链接导入 API

我有两个不同的订阅,因此我尝试将 API 从另一个订阅导入到一个订阅。

我不知道在调用服务以读取以导入时我做错了什么,因为我收到 500 内部服务器错误。

下面的屏幕截图为我提供了从链接导入服务的正确方法的指导。

在此处输入图像描述

在此处输入图像描述

0 投票
2 回答
764 浏览

azure - 我们如何导出 PRODUCT 的完整副本以及与之关联的所有 API

有没有办法通过导出产品来给出它的完整定义,包括与该产品相关的 API 和策略。

这样我只能打两个电话来导出完整的产品并将完整的产品导入其他地方。

是否有任何其他最佳做法可以最大限度地减少以下导出和导入调用次数

  1. 对 REST 管理 API 进行 GET 调用以从一个订阅中导出不同的 API。
  2. 对 REST 管理 API 进行 GET 调用以从 API 导出策略。(不幸的是,导出 API 不会导出与其关联的策略)。
  3. 对 REST 管理 API 进行 PUT 调用以将不同的 API 导入另一个订阅。
  4. 对 REST 管理 API 进行 PUT 调用以设置与 API 关联的策略。
  5. 对 REST 管理 API 进行 GET 调用,以从一个订阅中导出不同的产品。
  6. 对 REST 管理 API 进行 GET 调用以获取与 PRODUCT 关联的 API 列表。
  7. 对 REST 管理 API 进行 PUT 调用以在另一个订阅中创建产品。
  8. 对 REST 管理 API 进行 PUT 调用以将 API 添加到产品。
0 投票
1 回答
50 浏览

azure - Azure Api Management Join Payloads 并为客户提供

我对 Azure Management Api 的使用有疑问。单一责任 Api 的架构预测域以执行业务领域的功能。参见图像结构。

在此处输入图像描述

1. 我想知道 Azure Api 管理是否作为管理运行,或者我是否有可能将其用作 Geteway,将多个 API 的结果合二为一(编排)并可供发出请求的客户端使用?

2. 收集这些数据的责任是 Web 应用程序吗?

3.有模式吗?

0 投票
1 回答
108 浏览

azure-api-management - 管理外部认证 API

我希望使用 Azure API 管理为一些外部的、经过身份验证的 API(Twitter 等)提供集中式 API,利用application-only authentication。我想向类似仪表板的移动应用程序提供特定的推文等,而用户无需为每项服务使用自己的帐户进行身份验证。

到目前为止,我还没有找到任何关于这样做的文档或示例。政策看起来很有希望,但我还没有能够证明它们。或者可能为每个外部服务创建我自己的 API 应用程序(以正确处理身份验证),然后通过 API 管理管理该 API。

有人对实现这一目标的更好方法有想法/想法吗?谢谢。