在边缘设备上为私有云支持 SAML

适用于私有云的 Edge v. 4.17.09

Edge 界面和 Edge 管理 API 通过向 Edge 管理服务器发出请求来运行,其中管理服务器支持以下类型的身份验证:

  • 基本身份验证:通过传递用户名和密码,登录 Edge 界面或向 Edge 管理 API 发出请求。
  • OAuth2 将 Edge 基本身份验证凭据换成 OAuth2 访问令牌和刷新令牌。通过在 API 调用的 Bearer 标头中传递 OAuth2 访问令牌来调用 Edge 管理 API。

Edge 还支持将安全断言标记语言 (SAML) 2.0 用作身份验证机制。启用 SAML 后,访问 Edge 界面和 Edge 管理 API 仍会使用 OAuth2 访问令牌。不过,现在您可以从 SAML 身份提供方返回的 SAML 断言生成这些令牌。

注意:系统仅支持将 SAML 作为身份验证机制。不支持授权。因此,您仍然使用 Edge OpenLDAP 数据库来维护授权信息。如需了解详情,请参阅分配角色

SAML 支持单点登录 (SSO) 环境。通过将 SAML 与 Edge 结合使用,除了您所提供的其他任何支持 SAML 的服务外,您还可以为 Edge 界面和 API 支持单点登录。

向 Edge for Private Cloud 添加了对 OAuth2 的支持

如上所述,Edge 中的 SAML 实现依赖于 OAuth2 访问令牌。因此,我们已向 Edge for Private Cloud 添加了 OAuth2 支持。如需了解详情,请参阅 OAuth 2.0 简介

SAML 优势

SAML 身份验证可提供很多优势。您可以使用 SAML 执行以下操作:

  • 全面掌控用户管理。如果用户离开您的组织并已在中央位置取消配置,系统会自动拒绝他们访问 Edge。
  • 控制用户访问 Edge 时需要进行身份验证的方式。您可以为不同的 Edge 组织选择不同的身份验证类型。
  • 控制身份验证政策。您的 SAML 提供商可能支持比您的企业标准更严格的身份验证政策。
  • 您可以监控 Edge 部署中的登录、退出、失败登录尝试和高风险活动。

将 SAML 与 Edge 搭配使用

如需在 Edge 上支持 SAML,您需要安装 Edge SSO 模块 apigee-sso。下图显示了用于私有云安装的 Edge 中的 Edge SSO:

您可以在与 Edge 界面和管理服务器相同的节点上安装 Edge SSO 模块,也可以在单独的节点上安装。确保 Edge SSO 可以通过端口 8080 访问管理服务器。

必须在 Edge SSO 节点上打开端口 9099,才能支持通过浏览器、外部 SAML IDP 以及管理服务器和 Edge 界面访问 Edge SSO。在配置 Edge SSO 时,您可以指定外部连接使用 HTTP 或加密的 HTTPS 协议。

Edge SSO 使用可通过 Postgres 节点上的端口 5432 访问的 Postgres 数据库。通常,您可以使用与 Edge 一起安装的 Postgres 服务器,即独立 Postgres 服务器或配置为主/备用模式的两个 Postgres 服务器。如果 Postgres 服务器的负载较高,您还可以选择仅为 Edge SSO 创建单独的 Postgres 节点。

启用 SAML 后,访问 Edge 界面和 Edge 管理 API 时会使用 OAuth2 访问令牌。 这些令牌由 Edge SSO 模块生成,该模块接受 IDP 返回的 SAML 断言。

从 SAML 断言生成后,OAuth 令牌的有效期为 30 分钟,刷新令牌的有效期为 24 小时。您的开发环境可能支持自动执行需要较长时长的令牌的常见开发任务,例如测试自动化或持续集成/持续部署 (CI/CD)。如需了解如何为自动化任务创建特殊令牌,请参阅将 SAML 与自动化任务搭配使用

Edge 界面和 API 网址

您访问 Edge 界面和 Edge 管理 API 所用的网址与您在启用 SAML 之前所用的网址相同。对于 Edge 界面:

http://edge_ui_IP_DNS:9000
https://edge_ui_IP_DNS:9000

其中,edge_ui_IP_DNS 是托管 Edge 界面的计算机的 IP 地址或 DNS 名称。在配置 Edge 界面时,您可以指定连接使用 HTTP 或加密的 HTTPS 协议。

对于 Edge Management API:

http://ms_IP_DNS:8080/v1  
https://ms_IP_DNS:8080/v1  

其中 ms_IP_DNS 是管理服务器的 IP 地址或 DNS 名称。在配置 API 时,您可以指定连接使用 HTTP 或加密的 HTTPS 协议。

在 Edge SSO 上配置 TLS

默认情况下,与 Edge SSO 的连接会使用托管 apigee-sso(Edge SSO 模块)的节点上的端口 9099 通过 HTTP 进行。apigee-sso 中内置了一个用于处理 HTTP 和 HTTPS 请求的 Tomcat 实例。

Edge SSO 和 Tomcat 支持三种连接模式:

  • DEFAULT - 默认配置支持端口 9099 上的 HTTP 请求。
  • SSL_TERMINATION - 在所选端口上启用了对边缘单点登录的 TLS 访问。您必须为此模式指定 TLS 密钥和证书。
  • SSL_PROXY - 在代理模式下配置 Edge SSO,这意味着您在 apigee-sso 前面安装了负载平衡器,并在负载平衡器上终止了 TLS。您可以指定 apigee-sso 上用于负载平衡器请求的端口。

为开发者服务门户和 API BaaS 启用 SAML 支持

为 Edge 启用 SAML 支持后,您可以选择为以下各项启用 SAML:

  • API BaaS - BaaS 门户和 BaaS 堆栈都支持 SAML 进行用户身份验证。如需了解详情,请参阅为 API BaaS 启用 SAML
  • 开发者服务门户 - 该门户在向 Edge 发出请求时支持 SAML 身份验证。请注意,这与开发者登录门户的 SAML 身份验证不同。您需要单独为开发者登录配置 SAML 身份验证。如需了解详情,请参阅配置开发者服务门户以使用 SAML 与 Edge 通信

在配置开发者服务门户和 API BaaS 的过程中,您必须指定使用 Edge 安装的 Edge SSO 模块的网址:

由于 Edge 和 API BaaS 共用相同的 Edge SSO 模块,因此它们支持单点登录。也就是说,登录 Edge 或 API BaaS 会同时登录这两者。这也意味着,您只需为所有用户凭据维护一个位置。

您还可以选择配置单次退出功能。请参阅从 Edge 界面配置单点登录