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

时间:2018-04-04 13:39:15

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

小背景

我目前正在尝试设置API管理器,以便按照the MSDN doc.

在混合云环境(AWS和Azure)中处理Azure中的授权

我们的环境

我们正在使用AWS和Azure,截至目前,我们的API都有EC2实例。我们的API也很招摇,应该符合进口商要求的惯例。

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

摩擦

目前,我无法对此进行测试,因为我对Azure环境的权限有限,正在等待批准但是,我被要求探索此问题。 (你只需要热爱官僚机构)否则,我们将实施OWIN和adal.js服务,为客户通信提供服务和服务,并不是首选的方式。 See this MSDN article for details

询问

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

1 个答案:

答案 0 :(得分:1)

当然可以。

只需导入招摇并添加(公共)后端网址 -

Swagger import

要验证API Management和外部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 Management实例成为机密客户端(持有client_id和client_secret),获取承载(访问)令牌并通过将其包含在Authorization标头中来调用外部API。

  • 在API Management和外部API之间使用共享密钥。不是世界上最安全的东西(它不会像JWT那样每小时过期),但并非闻所未闻。这是处理问题的 API密钥方式,一种没有Diffie,或Hellman或Merkle的Diffie-Hellman密钥交换。 Just Alice和Bob分享了一个秘密:)

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