首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从azure apim导出OAS时的安全性和策略

从azure apim导出OAS时的安全性和策略
EN

Stack Overflow用户
提问于 2021-09-12 20:22:29
回答 2查看 195关注 0票数 4

假设我有不同的后端服务在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中公开的后端端点呢?

EN

回答 2

Stack Overflow用户

发布于 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

票数 0
EN

Stack Overflow用户

发布于 2021-10-01 05:51:51

这个问题有几个部分...

在我工作的公司,我们使用APIM,但我们没有在那里定义我们的开放API规范(OAS)。IMO APIM实际上并不打算用作API文档工具。

我们在Swagger Hub中定义和记录OAS。Swagger Hub是Swagger规范背后的公司,该规范后来被重新命名为Open API规范。Swagger Hub是一个商业服务,但我认为也有一个免费的层次。

正如您可能知道的,您可以在Open API规范中定义多个安全方案,例如

代码语言:javascript
复制
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规范(在根级别或单个操作上)。

代码语言:javascript
复制
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)。

代码语言:javascript
复制
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,您可以选择

  • 从Swagger集线器为他们提供您的办公自动化,其中包括安全方案、服务器等。
  • 只需为他们提供对Swagger UI文档的访问权限,该文档对于您的办公自动化来说是一个很好的UI,它能够根据您指定的安全方案进行身份验证,并向在不同位置运行的应用编程接口(例如本地主机)或您在Azure中运行的开发/SIT/UAT发出API请求...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69154943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档