假设我有不同的后端服务在azure api管理(apim)中公开它们的api。不同的服务依赖于不同的安全方法,例如jwt令牌和订阅密钥。后端开发人员指定这些差异,并使用OpenApi规范(OAS)将它们上传到APIM.然后我找到了Security definitions are ignored,那么开发人员必须在哪里指定此信息?而不是描述?或者在apim中传递安全信息的适当方式是什么。
此外,apim可以设置关于安全性的策略。这些策略也不会在OAS中公开。但是,除了订阅密钥之外,这只是默认行为,即使在apim中禁用api设置中的订阅必需标记,订阅密钥仍然存在于OAS中。
那么,当OAS中没有后端服务安全性和apims安全性时,该如何通知用户呢?有没有我遗漏的一些配置?
我的apim的想法是拥有不同的后端服务供应商,这样他们就可以有不同的安全级别-它可以在OAS中指定-但不会在apim导出的版本中给我任何东西。
此外,作为apim的所有者,我将设置一些安全设置-这些设置仍然不会出现在OAS中。那么,消费者应该如何理解如何使用下载的OAS中公开的后端端点呢?
发布于 2021-09-15 10:47:08
解决这个问题的一种方法是将你的密钥和秘密存储在Azure Key Vault上,并从你的前端应用程序访问它们。
另一种方法是将Dapr与APIM一起使用。Dapr有助于构建事件驱动的、弹性的分布式应用程序。为了使用应用程序秘密,Dapr有一个专用的秘密构建块API,允许开发人员从秘密存储中获取秘密。
有关更多信息,请查看此Secrets Management文档。
Azure API Management (APIM)服务中的Dapr集成仅在去年发布。这一新功能使运营团队能够直接将Dapr微服务公开为API,并使这些API可被开发人员发现并轻松使用。
您可以查看此Microsoft文档以了解更多信息。Dapr integration in Azure API Management Service。
发布于 2021-10-01 05:51:51
这个问题有几个部分...
在我工作的公司,我们使用APIM,但我们没有在那里定义我们的开放API规范(OAS)。IMO APIM实际上并不打算用作API文档工具。
我们在Swagger Hub中定义和记录OAS。Swagger Hub是Swagger规范背后的公司,该规范后来被重新命名为Open API规范。Swagger Hub是一个商业服务,但我认为也有一个免费的层次。
正如您可能知道的,您可以在Open 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”中呈现Open API规范。当您在Swagger UI中调用操作时,您可以将servers配置为指向不同的位置(例如APIM)。
servers:
- description: 'localhost'
url: http://localhost:{port}
variables:
port:
default: "8089"
- description: 'APIM DEV'
url: {apim-url}有关配置服务器的详细信息,请参阅。
在您的OAS呈现的Swagger UI中,单击authorize按钮并按如下方式验证您指定的安全方案之一:


并通过下拉菜单更改您要指向的服务器:

切换到APIM服务端,调用您的API操作,调用APIM前台的API。
您可以在Swagger Hub中发布API,并使您的消费者可以公开访问该API。
在APIM中,您可能需要实现诸如validate JWT之类的策略,但是正如您所提到的,这些策略并不存在于OAS中。理想情况下,您的APIM配置将全部在源代码控制中,这将包括OAS以及APIM策略和其他配置。要做到这一切其实并不容易--我最近看了一个PluralSight课程,它很好地概述了如何为APIM设置SCM -请参阅here。
Swagger Hub中有一个集成,可以将OAS直接发布到APIM,这可能也很有趣,但我没有将其用作任何工作流的一部分。参见here。
WRT,您可以选择
https://stackoverflow.com/questions/69154943
复制相似问题