azure - 我可以导入从 Azure 外部托管的 APIM 吗?

标签 azure asp.net-web-api azure-active-directory azure-api-management

一点背景

我目前正在尝试设置 API 管理器来按照 the MSDN doc. 在混合云环境(AWS 和 Azure)中处理 Azure 中的授权。

我们的环境

我们同时使用 AWS 和 Azure,并且目前已经拥有带有我们 API 的 EC2 实例。我们的 API 也有 swagger,并且应该满足导入器所需的约定。

该 API 是 ASP.NET WebApi2(完整框架版本),并使用 swagger 进行配置。此外,可以从 Azure 看到 ec2 api 端点,因为我们使用 Azure Active Directory 应用程序注册来验证我们的应用程序。

摩擦

目前,我无法对此进行测试,因为我对 Azure 环境的权限有限并且正在等待批准,但我被要求探索这一点。 (你必须喜欢官僚机构)否则,我们将实现 OWIN 和 adal.js 来提供服务到服务和服务到客户端通信,这不会是首选方式。 See this MSDN article for details

询问

是否有可能或者我应该设定走困难路线的期望? 我可以导入从 Azure 外部托管的 APIM 吗?

最佳答案

当然可以。

只需导入 swagger 并添加您的(公共(public))后端 URL —

Swagger import

为了验证 API 管理和外部 API 之间的调用,我看到了三种直接方法:

  • Integrate API Management with a VNET并通过站点到站点 VPN 调用外部 API(这减少了执行 OAuth 的需要,但需要大量的基础设施设置工作)。嗯,不简单但也不可怕,看看这个 StrongSwan 配置:

    conn azure
        authby=secret
        type=tunnel
        leftsendcert=never
        left=40.127.x.x
        leftsubnet=10.5.5.0/24
        right=172.31.22.44
        rightsubnet=10.77.0.0/16
        keyexchange=ikev2
        auto=start
    
  • 使用 OAuth 2.0 客户端凭据授予。这被称为 Web App to Web API in Azure AD docs 。我相信this is the relevant API Management guidance 。在这种情况下,API 管理实例成为 secret 客户端(保存 client_id 和 client_secret),获取承载(访问) token 并通过将其包含在 Authorization 中来调用外部 API。 header 。

  • 在 API 管理和外部 API 之间使用共享 key 。这不是世界上最安全的东西(它不会像 JWT 那样每小时过期),但也不是闻所未闻。这是处理问题的API key 方式,类似于没有 Diffie、Hellman 或 Merkle 的 Diffie-Hellman key 交换。 。只是爱丽丝和鲍勃分享一个 secret :)

在任何地方都使用 HTTPS,是的,甚至跨 VPN - 考虑请求 header /正文不变性,而不是增加安全性。人们喜欢部署“检查”东西的装置......

关于azure - 我可以导入从 Azure 外部托管的 APIM 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49652533/

相关文章:

azure - 更新所有文档的 ttl

azure - 无法使用 Azure Kubernetes 服务 RBAC 管理员角色创建 Azure AKS 命名空间

Azure 管理 API - 429 请求过多

c# - 接受列表参数的 odata 操作始终为 null

c# - 在 ApiController 操作中获取当前用户,而不将用户 ID 作为参数传递

c# - WebAPI 如何在 (.NET) 客户端反序列化异常

azure - 找不到授予管理员同意

angular - 使用 MSAL Angular 包装器在 Ionic 4 中处理来自 Azure AD 的回调

azure - 无法调用 RN.createPublicClientApplication

azure - 同步失败: access denied to azure compute emulator