可以使用“身份验证”工作区在 SaltStack Config 中配置 SSO,以与兼容 OAuth 和 OIDC 协议的身份验证系统配合使用。

注: 如果需要,可以在 SaltStack Config 中同时使用多个系统对用户进行身份验证。例如,可以使用基于 SAML 的 IdP 或基于 LDAP 的 IdP,同时在 RaaS 服务器上本地存储一些用户凭据。但是, SaltStack Config 不允许同时配置两个以上的 SAML 提供程序或两个以上的 LDAP 提供程序。

关于 OAuth 和 OIDC SSO

OAuth 单点登录 (SSO) 是许多组织在实施 SaltStack Config 期间配置的一项功能。SSO 具有许多优势,其中包括:

  • 缩短用户以同一身份登录到多个服务所用的时间。用户登录到某个机构中的一个服务后,会自动进行身份验证,进入使用 SSO 的任何其他服务。
  • 减少密码疲劳。用户只需记住一组凭据,而不是多组凭据。

许多服务都提供了 OAuth 协议的实现和对 OIDC 的支持,包括 OKTA、Google、Microsoft、GitLab、Zendesk、Apple、Keycloak、Salesforce 等。

注: SaltStack Config 目前仅支持通过 OKTA 和 Google 进行 OAuth 和 OIDC 身份验证。

OAuth 和 OIDC 如何与 SaltStack Config 结合使用

当用户尝试使用 OAuth 身份登录到 SaltStack Config 时:

  1. SaltStack Config 向用户请求访问服务资源的授权。
  2. 如果用户授权请求,则 SaltStack Config 会收到授权许可。
  3. SaltStack Config 通过对自己的身份进行身份验证向授权服务器 (API) 请求访问令牌。
  4. 如果应用程序身份经过身份验证且授权许可有效,则授权服务器 (API) 将向 SaltStack Config 颁发访问令牌。
  5. SaltStack Config 向资源服务器 (API) 请求资源并提供用于身份验证的访问令牌。
  6. 如果访问令牌有效,则资源服务器 (API) 将向应用程序提供资源,并允许用户登录到 SaltStack Config

OAuth 和 OIDC 身份验证术语

术语 定义
OAuth

OAuth 2.0 是一种用于委派访问权限的开放式协议(有时也称为标准),在使用安全令牌对用户的身份进行身份验证之后,用户可以在网站上执行操作。用户通常使用此方法为应用程序提供对其在其他第三方应用程序上的信息的访问权限,而无需提供其访问凭据(密码)。

OAuth 是基于浏览器的单点登录 (SSO)。OAuth 允许授权服务器在获得资源所有者批准后向第三方客户端颁发访问令牌。随后,第三方使用访问令牌访问资源服务器托管的受保护资源。

OIDC

Open ID Connect

Open ID Connect (OIDC) 是位于 OAuth 2.0 协议之上的简单身份层。OIDC 允许客户端根据授权服务器执行的身份验证来验证用户的身份。此外,它还可以跨应用程序获取有关用户的基本个人资料信息。

资源所有者 资源所有者是授权应用程序访问其帐户的用户。应用程序对用户帐户的访问仅限于授予的授权范围,如读取或写入访问权限。
客户端 客户端是需要访问用户帐户的第三方应用程序,在本例中为 SaltStack Config
授权服务器 授权服务器托管受保护的用户帐户和凭据。它验证用户的身份,然后向客户端颁发访问令牌。经常通过服务的 API 对其进行访问。
资源服务器

资源服务器是用于访问用户信息的 API 服务器。它在客户端获取访问令牌后处理经过身份验证的请求。小型部署通常只有一个资源服务器,并且通常构建为与授权服务器相同的代码库或相同部署的一部分。

大规模部署可能有多个资源服务器。每个资源服务器都完全独立,但它们都共享同一个授权服务器。

预配置步骤

SaltStack Config 中配置 OAuth 和 OIDC 之前,请确保您对您组织的 OAuth 2.0 服务(OKTA 或 Google)有必要的访问权限,并且相对熟悉它们注册应用程序的流程。

注: SaltStack Config 目前仅支持通过 OKTA 和 Google 进行 OAuth 和 OIDC 身份验证。

在 OKTA 或 Google 中将 SaltStack Config 注册为应用程序

在 OAuth 服务的网站上,输入有关 SaltStack Config 的基本信息,如名称、网站等。注册应用程序后,您将获得一个客户端密码,需要将其提供给 SaltStack Config

创建应用程序时最重要的事项之一是注册应用程序将使用的一个或多个重定向 URL。重定向 URL 是用户授权应用程序后 OAuth 2.0 服务将用户返回到的位置。

配置身份提供程序

要使用组织首选的 OAuth 和 OIDC 服务设置 SSO,请执行以下操作:

  1. 单击侧边菜单上的管理 > 身份验证
  2. 单击创建
  3. 配置类型菜单中,选择 OIDC
  4. 名称字段中,为此配置分配一个描述性名称。
  5. OIDC 提供程序菜单中,选择 OKTAGoogle
  6. 在以下字段中填写有关 SaltStack Config 安装的信息:
    • 基本 URI
    • API URL(仅适用于 OKTA 配置)
    • Key
    • 密码
    注: 有关这些字段的描述,请参见 OIDC 信息字段
  7. 单击保存

SaltStack Config 的 OIDC 配置现已完成。

配置基于 OIDC 的 RBAC

对于 OIDC,用户首先需要登录到 SaltStack Config 才能在本地用户数据库中添加为用户。用户初次登录后,将按照与管理凭据本地存储在 RaaS 服务器上的 SaltStack Config 中的用户相同的方式管理用户的角色和权限。

用户初次登录后,您可以使用“角色”工作区将适当的角色和权限分配给该用户。有关“角色”工作区的详细信息,请参见角色和权限

OIDC 信息字段

所有 OIDC 身份验证信息字段均为必填字段。按如下方式输入 OIDC 身份验证配置信息。

注: 如果设置连接时需要帮助,请联系您的管理员。
字段 说明
名称 SSE 所用身份验证连接的名称。登录到“身份验证”工作区时,此名称将显示在边栏中,如果要设置多个配置,该名称应唯一。
OIDC 提供程序 从此菜单中选择 OIDC 身份提供程序,以显示特定于提供程序的设置。
基本 URI 您组织在 SaltStack Config 中使用的基本 URL,也称为主机服务器地址。此 URL 的格式为 FQDN 或 IP 地址,例如 https://example.com
API URL 您的身份提供程序提供的 API URL。仅当您的身份提供程序为 OKTA 时,才会显示此字段。
Key 身份提供程序提供的密钥。在 OKTA 中,密钥称为客户端 ID。
密码 身份提供程序提供的密码。在 OKTA 中,密钥称为客户端密码。