保护对 API 管理开发人员门户的访问
API 管理提供一个完全可自定义的独立托管开发人员门户,开发人员用户可以在外部(或内部)使用该门户来发现通过 API 管理发布的 API 并与之交互。 开发人员门户中有多个选项可以帮助实现安全的用户注册和登录。
注意
默认情况下,开发人员门户启用匿名访问。 这意味着任何人都无需登录即可查看门户和 API 等内容,但使用测试控制台等功能受到限制。 可以启用要求用户登录才能查看开发人员门户的设置。 在 Azure 门户中,在 API 管理实例的左侧菜单中的“开发人员门户”下,选择“标识”>“设置”。 在“匿名用户”下,选择(启用)“将匿名用户重定向到登录页面”。
身份验证选项
外部用户 - 在外部使用开发人员门户时,首选选项是通过 Azure Active Directory B2C (Azure AD B2C) 启用企业到消费者访问控制。
- Azure AD B2C 提供使用 Azure AD B2C 本机帐户的选项:用户注册 Azure AD B2C,然后使用该标识访问开发人员门户。
- 如果你希望用户使用现有社交媒体帐户或联合的组织帐户来访问开发人员门户,Azure AD B2C 也很有用。
- Azure AD B2C 提供了许多功能来改善最终用户注册和登录体验,包括条件访问和 MFA。
有关在开发人员门户中启用 Azure AD B2C 身份验证的步骤,请参阅如何在 Azure API 管理中使用 Azure Active Directory B2C 为开发人员帐户授权。
内部用户 - 在内部使用开发人员门户时的首选选择是利用公司 Microsoft Entra ID。 Microsoft Entra ID 为需要通过开发人员门户访问和发现 API 的企业用户提供无缝单一登录 (SSO) 体验。
有关在开发人员门户中启用 Microsoft Entra 身份验证的步骤,请参阅 如何在 Azure API 管理中使用 Microsoft Entra ID 授权开发人员帐户。
基本身份验证 - 默认选项是使用内置的开发人员门户用户名和密码提供程序,它允许开发人员直接在 API 管理中注册并使用 API 管理用户帐户登录。 通过此选项进行的用户注册受 CAPTCHA 服务保护。
开发人员门户测试控制台
除了为开发人员用户提供用于完成访问注册和登录的配置外,开发人员门户还包括一个测试控制台,开发人员可在其中通过 API 管理向后端 API 发送测试请求。 此测试工具还可以帮助 API 管理用户使用 Azure 门户管理服务。
如果通过 Azure API 管理公开的 API 受 OAuth 2.0 保护 - 即调用方应用程序(持有者)需要获取并传递有效的访问令牌 - 你可以将 API 管理配置为代表 Azure 门户或开发人员门户测试控制台用户生成有效令牌。 有关详细信息,请参阅如何通过配置 OAuth 2.0 用户授权来为开发人员门户的测试控制台授权。
要启用测试控制台来获取用于 API 测试的有效 OAuth 2.0 令牌,请执行以下操作:
将 OAuth 2.0 用户授权服务器添加到实例。 可以使用任何 OAuth 2.0 提供程序,包括 Microsoft Entra ID、Azure AD B2C 或第三方标识提供者。
然后,使用该授权服务器的设置配置 API。 在门户中,在 API 的“设置”页 >“安全”>“用户授权”上配置 OAuth 2.0 授权。
这项用于 API 测试的 OAuth 2.0 配置独立于用户访问开发人员门户所需的配置。 但是,标识提供者和用户可能是相同的。 例如,Intranet 应用程序可能要求用户使用 SSO 及其公司标识访问开发人员门户。 该同一公司标识可通过测试控制台获得一个令牌,并将其用于使用相同用户上下文调用的后端服务。
方案
不同的身份验证和授权选项适用于不同的方案。 以下部分探讨了三种示例方案的高级配置。 需要执行其他步骤来全面保护和配置通过 API 管理公开的 API。 但是,这些方案专门注重每种情况下建议的最低配置,以提供所需的身份验证和授权。
方案 1 - Intranet API 和应用程序
- API 管理参与者和后端 API 开发人员希望发布受 OAuth 2.0 保护的 API。
- 该 API 将由其用户通过 Microsoft Entra ID 使用 SSO 登录的桌面应用程序使用。
- 桌面应用程序开发人员还需要通过 API 管理开发人员门户发现和测试 API。
关键配置:
配置 | 参考 |
---|---|
使用其企业标识和 Microsoft Entra ID 为 API 管理开发人员门户的开发人员用户授权。 | 在 Azure API 管理中使用 Microsoft Entra ID 授权开发人员帐户 |
在开发人员门户中设置测试控制台以获取有效的 OAuth 2.0 令牌,使桌面应用开发人员能够使用后端 API。 相同的配置可用于 Azure 门户中的测试控制台,API 管理参与者和后端开发人员可以访问该控制台。 该令牌可与 API 管理订阅密钥结合使用。 |
如何通过配置 OAuth 2.0 用户授权来对开发人员门户的测试控制台授权 Azure API 管理中的订阅 |
在使用访问令牌通过 API 管理调用 API 时验证 OAuth 2.0 令牌和声明。 | 验证 JWT 策略 |
通过将 API 管理移入网络外围并通过反向代理控制入口,在此方案中更进一步。 有关参考体系结构,请参阅使用应用程序网关和 API 管理保护 API。
方案 2 - 外部 API,合作伙伴应用程序
- API 管理参与者和后端 API 开发人员希望快速完成概念证明,以通过 Azure API 管理公开旧 API。 通过 API 管理公开的 API 将面向外部 (internet)。
- 该 API 使用客户端证书身份验证,将由合作伙伴在海外开发的面向公众的新单页应用 (SPA) 使用。
- SPA 使用 OAuth 2.0 和 Open ID Connect (OIDC)。
- 应用程序开发人员将通过开发人员门户访问测试环境中的 API,并使用测试后端终结点加速前端开发。
关键配置:
配置 | 参考 |
---|---|
使用默认用户名和密码身份验证配置前端开发人员对开发人员门户的访问。 还可以邀请开发人员访问开发人员门户。 |
将开发人员门户的用户配置为使用用户名和密码进行身份验证 如何在 Azure API 管理中管理用户帐户 |
当 SPA 使用访问令牌调用 API 管理时验证 OAuth 2.0 令牌和声明。 在这种情况下,受众是 API 管理。 | 验证 JWT 策略 |
将 API 管理设置为使用客户端证书对后端进行身份验证。 | 使用 Azure API 管理中的客户端证书身份验证确保后端服务安全 |
通过结合使用开发人员门户和 Microsoft Entra 授权和 Microsoft Entra B2B 协作,使交付合作伙伴能够更紧密地协作,进一步了解此方案。 考虑在开发或测试环境中通过 RBAC 委托对 API 管理的访问权限,并使用他们自己的企业凭据在开发人员门户中启用 SSO。
方案 3 - 外部 API,SaaS,向公众开放
API 管理参与者和后端 API 开发人员正在编写几个可供社区开发人员使用的新 API。
这些 API 将公开发布,其整个功能受付费墙的保护,并使用 OAuth 2.0 进行保护。 购买许可证后,开发人员将获得他们自己的客户端凭据,以及可用于生产的有效订阅密钥。
外部社区开发人员将使用开发人员门户来发现 API。 开发人员将使用他们的社交媒体帐户注册并登录到开发人员门户。
具有测试订阅密钥的感兴趣开发人员门户用户可以在测试上下文中探索 API 功能,而无需购买许可证。 开发人员门户测试控制台将代表调用方应用程序,并生成后端 API 的默认访问令牌。
注意
在开发人员门户测试控制台中使用客户端凭据流时需要额外小心。 请参阅安全注意事项。
关键配置:
配置 | 参考 |
---|---|
在 Azure API 管理中设置产品,以代表向社区开发人员公开的 API 组合。 设置订阅,使开发人员能够使用 API。 |
教程:创建和发布产品 Azure API 管理中的订阅 |
使用 Azure AD B2C 配置社区开发人员对开发人员门户的访问权限。 然后可将 Azure AD B2C 配置为使用一个或多个下游社交媒体标识提供者。 | 如何在 Azure API 管理中使用 Azure Active Directory B2C 为开发人员帐户授权 |
在开发人员门户中设置测试控制台,以使用客户端凭据流获取后端 API 的有效 OAuth 2.0 令牌。 | 如何通过配置 OAuth 2.0 用户授权来对开发人员门户的测试控制台授权 调整本文中所述的配置步骤,以使用客户端凭据授予流而不是授权代码授予流。 |
通过委托用户注册或产品订阅更进一步,并使用你自己的逻辑扩展流程。
后续步骤
- 详细了解 Microsoft 标识平台中的身份验证和授权。
- 了解如何使用 API 管理缓解 OWASP API 安全威胁。