问题标签 [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 回答
706 浏览

api - Azure API 管理不会在 4xx 上发送 CORS 标头

在我的 Azure API 管理中,我为整个 API 定义了 CORS 策略。使用 OPTIONS 命令一切正常,每个成功的请求和 500 个响应都会返回允许的来源。

出于某种奇怪的原因,当 API 返回 401 或 403 时,allowed-origin 标头不会随响应一起发回。我从这里的前端团队了解到,这会导致麻烦,因为浏览器和/或 Angular 无法处理 XHR 响应,因为它不知道是否允许...

有谁知道为什么 API 管理会有这样的行为以及如何防止这种情况发生?

非常感谢!

彼得

0 投票
1 回答
1008 浏览

azure - API 管理服务 - 管理员组

我已经为客户端设置了 API 管理服务。我们在他们的订阅下有一个共同管理员帐户。

如果我们单击 Azure 中的链接,我们可以访问发布者和开发者门户,但如果我们直接转到 URL 并输入与我们的 Azure 订阅相关联的电子邮件/密码,我们会得到:

电子邮件或密码无效。请更正错误并重试。

我错过了什么?

0 投票
2 回答
3707 浏览

api - Azure API 管理 - API 端点域与实际 API URL

我已经设置了 Azure API 管理服务并将其配置在自定义域上。在 Azure 门户的 API 管理服务的配置部分下,我设置了以下内容: API 管理服务 - 配置

因为这是一个客户端系统,所以我必须排除细节,但这里是基础知识:

  • API 端点域:api.example.com
  • 开发者门户域:apiportal.example.com
  • 两者都上传了 SSL。

因为我将类型设置为自定义,所以我需要输入 API ENDPOINT 和 DEV PORTAL。

当我进入发布门户并设置 API 时,我得到以下信息: API 发布者门户 - API 设置

我需要能够运行单个开发人员门户,但有 2 个不同的 API 服务器(1-Sandbox,2-Production),但它们将具有不同的子域(api-sandbox.example.com 和 api.example.com)

这可能吗?为什么 API 设置会用我在 API 管理配置中输入的内容覆盖 Web 服务 URL/URL 后缀?

0 投票
1 回答
93 浏览

api - 从 Swagger 元数据创建 Azure Api 应用

我在 API 管理层创建了一些 API,它们本质上是调用客户端和底层 Web api 之间的代理。

我通过导入底层 API 的 swagger 文件来做到这一点,然后将新创建的 API 添加到产品中,对我需要的每个单独的代理重复此操作。这意味着可以调用底层 API,但不能没有新创建的 API 所附加到的产品的订阅者密钥。

在此处输入图像描述

是否可以对 API 应用程序执行类似的操作,即仅使用 azure 门户中底层 API 的 swagger 文件创建 API 应用程序,充当调用客户端和底层 Web api 之间的代理(如下所示)?

在此处输入图像描述

0 投票
4 回答
4979 浏览

api - Azure API 管理 - 更新 Swagger 架构

我已经导入了我的招摇模式,并且管理服务已经为我的 API 构建了所有文档。我现在进行了更改并重新部署了更改。我是否已从 API 管理中删除 API 并重新导入,还是有办法“更新”现有的?

0 投票
1 回答
674 浏览

django - Azure API 网关前端的 Django API

我有一个 Django 应用程序,它当前存储用户凭据并执行授权和身份验证。我正在将前端分解为 Angular SPA 并将后端转换为 REST API。我的 Django API 将作为受 Azure API 网关保护的 Azure API 应用程序存在。我想从 Django 中删除身份验证部分,并允许用户通过 Google 或 Microsoft 帐户使用 OpenID Connect 登录。我想要发生的是这样的:

当用户访问该网站时,假设他们从未注册过我的应用程序,他们将可以选择使用他们的 Google 帐户或 Microsoft 帐户登录。如果用户决定使用他们的 Google 或 Microsoft 帐户登录,(这是我感到困惑的地方,也是我在这里发帖的原因......)我认为会发生什么是 API 网关执行身份验证,生成 JSON Web 令牌(JWT),并将该令牌发送回 Django API。Django 接收 JWT,对其进行解密,并检查是否存在与 JWT 中的电子邮件地址匹配的用户帐户。如果没有用户帐户,Django 会将用户添加到用户帐户表(不存储密码)。如果有与该电子邮件地址匹配的用户,则 Django 允许该用户进入。

说了这么多,我想我的问题是:

  1. 我应该在 API 管理网关上进行身份验证,还是应该在 Azure Web API 上进行身份验证?

  2. 我可以使用 Django 的内置身份验证系统来做我想做的事还是不需要做的事?

  3. 我是不是把这一切都复杂化了?有没有更简单的方法来做到这一点?这一切似乎需要做很多工作。

  4. 我应该使用 OpenID Connect(而不是 Oauth2)吗?我也没有经验。

0 投票
3 回答
6994 浏览

security - Azure API 管理是否包含 WAF 功能?

我试图了解 Azure API 管理套件是否在其安全或策略设置中包含任何 WAF 功能(例如 OWASP 所述)。

如果“不”或“不”知道将面向公众的 API(处理 PII)、通过带有 Web 应用程序防火墙 (WAF) 的 Azure API 管理或云中的任何其他位置公开的 API 是否有意义 -> APIM -> VPN -> 防火墙 -> 本地服务拓扑?

提前致谢

0 投票
1 回答
592 浏览

azure - 是否可以匿名调用 API App 并自动将浏览器重定向到 AD 登录页面?

在最近在伦敦举行的 Microsoft Cloud 路演期间,关于应用服务的一次会谈中出现了使用 AAD B2C 进行身份验证的内容。

目前可以将 Azure AD 添加为 API 应用的身份验证:

在此处输入图像描述

从没有授权标头的基于浏览器的 Web 应用程序调用此 API 应用程序会立即导致 302 重定向,然后是 401 响应。

在云事件中提到,可以从 Web 应用程序匿名调用 API 应用程序,并让 azure 应用程序服务处理重定向到 AAD 登录页面,在成功登录时获取令牌,然后传递调用到 API 应用程序并返回数据。

但是,我很难看到如何在调用 Web 应用程序不负责处理重定向的情况下实现这一点。通常,您将通过在客户端通过 AAD 获取不记名令牌并将其作为授权标头与 api 请求一起发送来处理来自 API 的 401 响应。

我在 Azure 站点和其他站点上经历了许多示例,所有示例都在客户端 Web 应用程序中处理登录/获取令牌。

这甚至可能吗?

0 投票
1 回答
1179 浏览

azure - Azure API 管理订阅到期

我正在使用 2 种不同的产品设置 Azure API 管理,这些产品对底层 API 提供不同的访问和限制。

理想情况下,我希望每个产品的订阅有不同的时间长度,用户可以在需要更新之前访问它们。当我批准订阅时,我没有找到任何类型的订阅自动到期日期。

有没有办法做到这一点,我错过了?

0 投票
1 回答
1701 浏览

azure - Azure API 管理密钥

我正在使用 Azure API 管理,想知道主订阅密钥和辅助订阅密钥有什么区别。我可以同时使用这两种方式访问​​ API,那么到底有什么区别?