- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有不同的后端服务,在 azure api 管理 (apim) 中公开其 api。不同的服务依赖于不同的安全方法,例如jwt token 和订阅 key 。后端开发人员指定这些差异并使用 OpenApi 规范 (OAS) 将其上传到 apim。然后我发现Security definitions are ignored那么开发者必须在哪里指定这些信息呢?而是在描述中?或者在 apim 中传递安全信息的正确方法是什么。
此外,apim 可以设置有关安全的策略。这些政策也没有在美洲国家组织中公开。然而,除了订阅 key 之外,这只是默认行为,即使在 apim 的 api 设置中禁用了需要订阅的标签,订阅 key 仍然存在于 OAS 中。
那么当 OAS 中不存在后端服务安全性和 apims 安全性时,如何通知用户呢?我是否缺少某些配置?
我的 apim 的想法是让不同的后端服务供应商拥有不同的安全级别 - 可以在 OAS 中指定 - 但不会在 apim 导出的版本中提供任何内容。
此外,作为 apim 的所有者,我将设置一些安全设置 - 这些设置仍然不会出现在 OAS 中。那么消费者应该怎样做才能了解如何使用下载的 OAS 中公开的后端端点呢?
最佳答案
这个问题有几个部分......
在我工作的公司;我们使用 APIM,但我们没有在其中定义开放 API 规范 (OAS)。 IMO APIM 并不是真正打算用作 API 文档工具。
我们在Swagger Hub中定义并记录了OAS 。 Swagger Hub 是 Swagger 规范背后的公司,该规范现已更名为 Open API 规范。 Swagger Hub 是一项商业产品,但我认为还有免费套餐。
您可能知道,您可以在开放 API 规范中定义多种安全方案,例如
securitySchemes:
jwt_token:
type: oauth2
flows:
authorizationCode:
authorizationUrl: {my-authorization-url}
tokenUrl: {my-token-url}
apim_subscription_key:
type: apiKey
in: header
name: X-API-KEY
然后,您可以将这些安全方案应用到您的 Open API 规范(无论是在根级别还是在单个操作上)。
paths:
'/{version}/users':
get:
summary: 'Search for users'
description: 'blah'
security:
- jwt_token: []
- apim_subscription_key: []
在 Swagger Hub 中,您可以“查看文档”以在“Swagger UI”中呈现开放 API 规范。当您在 Swagger UI 中调用操作时,您可以将服务器
配置为指向不同的位置(例如 APIM),例如
servers:
- description: 'localhost'
url: http://localhost:{port}
variables:
port:
default: "8089"
- description: 'APIM DEV'
url: {apim-url}
参见here有关配置服务器的更多信息。
在 OAS 呈现的 Swagger UI 中,单击授权按钮并对指定的安全方案之一进行身份验证,如下所示:
并通过下拉菜单更改您指向的服务器:
切换到 APIM 服务器并调用您的 API 操作来调用 APIM 前端的 API。
您可以在 Swagger Hub 中发布 API,并使您的消费者可以公开访问该 API。
在 APIM 中,您可能需要实现诸如 validate JWT 之类的策略。 ,但正如您所提到的,这些并不存在于美洲国家组织中。理想情况下,您的 APIM 配置将全部处于源代码控制中,其中包括 OAS 以及 APIM 策略和其他配置等内容。完成所有这些实际上并不是微不足道的 - 我最近观看了一个 PluralSight 类(class),它很好地概述了如何为 APIM 设置 SCM - 请参阅 here .
Swagger Hub 中有一个集成,可将 OAS 直接发布到 APIM,这可能也很有趣,但我尚未将其用作任何工作流程的一部分。请参阅here .
写给您的 API 消费者,您可以:
关于azure - 从 azure apim 导出的 OAS 中的安全和策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69154943/
在我的 azure devops 管道中,我有一个任务 AzureCLI@2,它将 api 部署到 apim。我如何使用 az apim api 来执行相同的任务更新api?我知道有一个操作可以做到这
我理解当请求包含 Ocp-Apim-Trace: true 时,如下所示: GET /api/v1/BotConfig HTTP/1.1 Host: xyz.azure-api.net Cache-C
我理解当请求包含 Ocp-Apim-Trace: true 时,如下所示: GET /api/v1/BotConfig HTTP/1.1 Host: xyz.azure-api.net Cache-C
我已经创建了 web api 并尝试使用 c# 发出 GET 请求,如下所示 namespace APIMCheck { class Program { static void Main(
我想在 Azure API 管理策略中实现客户端证书验证,以检查客户端是否具有有效证书(按照以下文档)。 https://learn.microsoft.com/en-us/azure/api-man
我有一个带有自定义域和多个 API 的 azure APIM,如下面的屏幕截图所示:- 每个 API 下都有多个端点,并且所有端点都具有相同的主机名。自定义域级别有一个协商客户端证书 设置,我只想为其
我最近将 APIM 实例从开发人员层更改为消费层,并且在验证内容策略中看到了一些奇怪的行为。在开发人员层,此策略将按预期工作并返回 400 错误以及相应的错误消息。 以下是政策: 下面是来
我目前仍在 APIM 中探索。我在有效负载 #1 中有一个有效负载,我想将其转换为另一个有效负载 #2(预期)。 我将如何编辑我的策略来构建此有效负载? 有效负载1 { "dependtee_
我正在尝试通过 APIM 将文件批量上传到 Azure 存储帐户。在本地,我可以使用 REST API 将文件上传到 azure 存储帐户。但是,通过 APIM 我无法上传文件。我收到 401 错误。
在我的口腔中,我有查询参数调用“PageSize”,我需要检查用户输入情况比较严重,需要向用户显示消息 比我在出站部分中放置的 = 20">
来自Azure API management pricing page我发现除了开发人员层和高级层之外,不支持虚拟网络。 目前,在配置 APIM 的 VN 时,我的开发人员级别订阅可以在“关闭”、“外
我在 Azure API 管理中有以下策略。这样就可以正常工作了: @{ try { // ... doing something
我正在尝试通过 Azure APIM 访问本地 API。如果我使用 VNET 和 VPN 隧道,我可以访问 On-Prem API,但是,这不是一个理想的解决方案。我正在尝试让混合连接(端口桥)以相同
有没有办法将通过 APIM 请求传入的查询参数作为路径参数传递给后端服务调用?例如: 对于以下 API 调用 base_url/a/{pathParam1}?query=Qvalue 我想将 URL
目前我已经创建了一个 Azure APIM 实例,URL 如下所示。 https://abc-test.azure-api.net 我想使用此 APIM 实例来支持开发和 QA 环境。所以我想设置如下
我正在尝试处理后端 API(REST),没有可通过 Azure APIM 访问的 swagger 文档。我希望所有调用都定向到后端 API,而不是为所有资源手动创建 GET/PUT/POST。我的所有
来自Azure API management pricing page我发现除了开发人员层和高级层之外,不支持虚拟网络。 目前,在配置 APIM 的 VN 时,我的开发人员级别订阅可以在“关闭”、“外
我在 Azure API 管理中有以下策略。这样就可以正常工作了: @{ try { // ... doing something
我正在尝试通过 Azure APIM 访问本地 API。如果我使用 VNET 和 VPN 隧道,我可以访问 On-Prem API,但是,这不是一个理想的解决方案。我正在尝试让混合连接(端口桥)以相同
有没有办法将通过 APIM 请求传入的查询参数作为路径参数传递给后端服务调用?例如: 对于以下 API 调用 base_url/a/{pathParam1}?query=Qvalue 我想将 URL
我是一名优秀的程序员,十分优秀!