Citrix Cloud

将 Okta 作为身份提供程序连接到 Citrix Cloud

Citrix Cloud 支持使用 Okta 作为身份提供程序,对登录其工作区的订阅者进行身份验证。通过将您的 Okta 组织连接到 Citrix Cloud,您可以为订阅者提供统一的登录体验,以访问 Citrix Workspace 中的资源。

在 Workspace Configuration 中启用 Okta 身份验证后,订阅者将获得不同的登录体验。选择 Okta 身份验证提供的是联合登录,而非单点登录。订阅者从 Okta 登录页面登录工作区,但在从 Citrix DaaS(以前称为 Citrix Virtual Apps and Desktops 服务)打开应用程序或桌面时,他们可能需要进行第二次身份验证。要启用单点登录并防止出现第二次登录提示,您需要将 Citrix Federated Authentication Service 与 Citrix Cloud 结合使用。有关详细信息,请参阅将 Citrix Federated Authentication Service 连接到 Citrix Cloud

先决条件

Cloud Connector 或 Connector Appliance

Cloud Connector 或 Connector Appliance 是实现 Citrix Cloud 与您的资源位置之间通信所必需的。至少需要两个 Cloud Connector 或 Connector Appliance,以确保与 Citrix Cloud 的高可用性连接。您需要至少两个已加入 Active Directory 域的连接器。这些可以是 Cloud ConnectorConnector Appliance

连接器必须满足以下要求:

  • 满足其各自文档中描述的要求
  • 已加入您的 Active Directory (AD) 域。如果您的工作区用户位于多个域中,则可以使用 Connector Appliance 多域功能来加入多个域。
  • 连接到可以联系用户通过 Citrix Workspace 访问的资源的网络。
  • 连接到 Internet。有关详细信息,请参阅系统和连接要求

有关安装 Cloud Connector 的详细信息,请参阅Cloud Connector 安装。 有关安装 Connector Appliance 的详细信息,请参阅Connector Appliance 安装

Okta 域

将 Okta 连接到 Citrix Cloud 时,您必须提供您组织的 Okta 域。Citrix 支持以下 Okta 域:

  • okta.com
  • okta-eu.com
  • oktapreview.com

您还可以将 Okta 自定义域与 Citrix Cloud 结合使用。请在 Okta 网站上查看 自定义 Okta URL 域中有关使用自定义域的重要注意事项。

有关查找您组织的自定义域的详细信息,请参阅 Okta 网站上的查找您的 Okta 域

Okta OIDC Web 应用程序

要使用 Okta 作为身份提供程序,您必须首先创建一个 Okta OIDC Web 应用程序,其中包含可与 Citrix Cloud 配合使用的客户端凭据。创建并配置应用程序后,请记下客户端 ID 和客户端密钥。将 Okta 组织连接到 Citrix Cloud 时,您需要向 Citrix Cloud 提供这些值。

要创建和配置此应用程序,请参阅本文中的以下部分:

Workspace URL

创建 Okta 应用程序时,您必须提供 Citrix Cloud 中的 Workspace URL。要找到 Workspace URL,请从 Citrix Cloud 菜单中选择 Workspace Configuration。Workspace URL 显示在 Access 选项卡上。

重要:

如果您以后修改 Workspace URL,则必须使用新 URL 更新 Okta 应用程序配置。否则,您的订阅者在注销其工作区时可能会遇到问题。

Okta API 令牌

将 Okta 作为身份提供程序与 Citrix Cloud 结合使用需要您组织的 Okta API 令牌。使用您 Okta 组织中的只读管理员帐户创建此令牌。此令牌必须能够读取您 Okta 组织中的用户和组。

要创建 API 令牌,请参阅本文中的创建 Okta API 令牌。有关 API 令牌的详细信息,请参阅 Okta 网站上的创建 API 令牌

重要:

创建 API 令牌时,请记下令牌值(例如,暂时将其复制到纯文本文档中)。Okta 只显示此值一次,因此您可以在执行将 Citrix Cloud 连接到您的 Okta 组织中的步骤之前创建令牌。

使用 Okta AD 代理将 Active Directory 帐户同步到 Okta

要使用 Okta 作为身份提供程序,您必须首先将本地 AD 与 Okta 集成。为此,您需要在域中安装 Okta AD 代理,并将您的 AD 添加到 Okta 组织。有关部署 Okta AD 代理的指导,请参阅 Okta 网站上的Active Directory 集成入门

之后,将您的 AD 用户和组导入到 Okta。导入时,请包含与您的 AD 帐户关联的以下值:

  • Email
  • SID
  • UPN
  • OID

注意:

如果您将 Citrix Gateway 服务与 Workspace 结合使用,则无需将 AD 帐户与 Okta 组织同步。

要将您的 AD 用户和组与 Okta 组织同步:

  1. 安装并配置 Okta AD 代理。有关完整说明,请参阅 Okta 网站上的以下文章:
  2. 通过手动导入或自动导入将您的 AD 用户和组添加到 Okta。有关 Okta 导入方法和说明的详细信息,请参阅 Okta 网站上的管理 Active Directory 用户和组

创建 Okta OIDC Web 应用程序集成

  1. 在 Okta 管理控制台中,在 Applications 下,选择 Applications
  2. 选择 Create App Integration
  3. Sign in method 中,选择 OIDC - OpenID Connect
  4. Application type 中,选择 Web Application。选择 Next
  5. App Integration Name 中,输入应用程序集成的友好名称。
  6. Grant type 中,选择 Authorization Code(默认选中)。
  7. Sign-in redirect URIs 中,输入 https://accounts.cloud.com/core/login-okta
    • 如果您的 Citrix Cloud 客户位于欧盟、美国或亚太南部地区,请输入 https://accounts.cloud.com/core/login-okta
    • 如果您的 Citrix Cloud 客户位于日本地区,请输入 https://accounts.citrixcloud.jp/core/login-okta
    • 如果您的 Citrix Cloud 客户位于 Citrix Cloud Government 地区,请输入 https://accounts.cloud.us/core/login-okta
  8. Sign-out redirect URIs 中,输入 Citrix Cloud 中的 Workspace URL。
  9. 如果您还使用 Workspace 自定义域,则也需要输入此项。例如:
    • https://workspaceurl1.cloud.com
    • https://workspaceurl2.cloud.com
    • https://workspaceurl1.mycustomdomain.com
  10. Assignments 下的 Controlled access 中,选择是将应用程序集成分配给组织中的所有人、仅分配给您指定的组,还是稍后分配访问权限。
  11. 选择 Save。保存应用程序集成后,控制台将显示应用程序配置页面。
  12. Client Credentials 部分中,复制 Client IDClient Secret 值。将 Citrix Cloud 连接到您的 Okta 组织时,您将使用这些值。

配置 Okta OIDC Web 应用程序

在此步骤中,您将使用 Citrix Cloud 所需的设置配置 Okta OIDC Web 应用程序。Citrix Cloud 需要这些设置才能在订阅者登录其工作区时通过 Okta 对其进行身份验证。

  1. (可选)更新隐式授权类型的客户端权限。如果您希望为此授权类型授予最少权限,则可以选择执行此步骤。
    1. 在 Okta 应用程序配置页面上,在 General 选项卡上,滚动到 General Settings 部分并选择 Edit
    2. Application 部分的 Grant type 中,在 Client acting on behalf of a user 下,清除 Allow Access Token with implicit grant type 设置。

      Okta OIDC GrantType

    3. 选择 Save
  2. 添加应用程序属性。这些属性区分大小写。
    1. 在 Okta 控制台菜单中,选择 Directory > Profile Editor
    2. 选择 Okta User (default) 配置文件。Okta 将显示 User 配置文件页面。

      Okta OIDC UserProfile

    3. Attributes 下,选择 Add attribute

      Okta OIDC Add Attribute

    4. 输入以下信息:
      • 显示名称:cip_email
      • 变量名称:cip_email
      • 描述:AD 用户电子邮件
      • 属性长度:选择 Greater than,然后输入 1
      • 属性必填:是

        Okta OIDC Add Attribute2

    5. 选择 Save and Add Another
    6. 输入以下信息:
      • 显示名称:cip_sid
      • 变量名称:cip_sid
      • 描述:AD 用户安全标识符
      • 属性长度:选择 Greater than,然后输入 1
      • 属性必填:是
    7. 选择 Save and Add Another
    8. 输入以下信息:
      • 显示名称:cip_upn
      • 变量名称:cip_upn
      • 描述:AD 用户主体名称
      • 属性长度:选择 Greater than,然后输入 1
      • 属性必填:是
    9. 选择 Save and Add Another
    10. 输入以下信息:
      • 显示名称:cip_oid
      • 变量名称:cip_oid
      • 描述:AD 用户 GUID
      • 属性长度:选择 Greater than,然后输入 1
      • 属性必填:是
    11. 选择 Save
  3. 编辑应用程序的属性映射:
    1. 在 Okta 控制台中,选择 Directory > Profile Editor > Directories
    2. 找到您的 AD 的 active_directory 配置文件。此配置文件可能使用 myDomain User 格式进行标记,其中 myDomain 是您集成的 AD 域的名称。

      Okta OIDC Directory Mappings

    3. 选择 Mappings。将显示您的 AD 域的用户配置文件映射页面,并选中将您的 AD 映射到 Okta 用户的选项卡。

      Okta OIDC Select Configure Mappings

    4. Okta User User Profile 列中,找到您在步骤 2 中创建的属性并按如下方式进行映射:

      Okta OIDC Directory Profile Mappings1

      Okta OIDC Directory Profile Mappings2

      • 对于 cip_email,从您域的用户配置文件列中选择 email。选中后,映射显示为 appuser.email
      • 对于 cip_sid,从您域的用户配置文件列中选择 objectSid。选中后,映射显示为 appuser.objectSid
      • 对于 cip_upn,从您域的用户配置文件列中选择 userName。选中后,映射显示为 appuser.userName
      • 对于 cip_oid,从您域的用户配置文件列中选择 externalId。选中后,映射显示为 appuser.externalId
    5. 选择 Save Mappings
    6. 选择 Apply updates now。Okta 将启动一个作业来应用映射。
    7. 将 Okta 与您的 AD 同步。
      1. 在 Okta 控制台中,选择 Directory > Directory Integrations
      2. 选择您集成的 AD。
      3. 选择 Provisioning 选项卡。
      4. Settings 下,选择 To Okta
      5. 滚动到 Okta Attribute Mappings 部分,然后选择 Force Sync

创建 Okta API 令牌

  1. 使用只读管理员帐户登录 Okta 控制台。
  2. 在 Okta 控制台菜单中,选择 Security > API
  3. 选择 Tokens 选项卡,然后选择 Create Token
  4. 输入令牌的名称。
  5. 选择 Create Token
  6. 复制令牌值。将 Okta 组织连接到 Citrix Cloud 时,您需要提供此值。

将 Citrix Cloud 连接到您的 Okta 组织

  1. 登录 Citrix Cloud:https://citrix.cloud.com
  2. 在 Citrix Cloud 菜单中,选择 Identity and Access Management
  3. 找到 Okta,然后从省略号菜单中选择 Connect
  4. Okta URL 中,输入您的 Okta 域。
  5. Okta API Token 中,输入您组织的 API 令牌。
  6. Client IDClient Secret 中,输入您之前创建的 OIDC Web 应用程序集成中的客户端 ID 和密钥。要从 Okta 控制台复制这些值,请选择 Applications 并找到您的 Okta 应用程序。在 Client Credentials 下,使用每个值的 Copy to Clipboard 按钮。
  7. 单击 Test and Finish。Citrix Cloud 将验证您的 Okta 详细信息并测试连接。

成功验证连接后,您可以为 Workspace 订阅者启用 Okta 身份验证。

为工作区启用 Okta 身份验证

  1. 在 Citrix Cloud 菜单中,选择 Workspace Configuration > Authentication
  2. 选择 Okta
  3. 出现提示时,选择 I understand the impact on the subscriber experience
  4. 选择 Save

切换到 Okta 身份验证后,Citrix Cloud 会暂时禁用工作区几分钟。重新启用工作区后,您的订阅者可以使用 Okta 登录。

更多信息

故障排除

问题 1

Okta OIDC 对 Workspace 的身份验证成功,但最终用户在 Workspace 中看不到 DaaS 资源。这可能是由于缺少声明(例如未将 “ctx_user.sid” 发送到 DaaS)造成的。

调试步骤 1

  1. 使用浏览器捕获 HAR 文件,并使用 Okta OIDC 身份验证登录 Workspace,然后从 Workspace 注销。
  2. 当用户从 Workspace 执行显式注销操作时,在浏览器开发人员工具中找到以下调用:

    GET https://accounts.cloud.com/core/connect/endsession?id_token_hint=<base64string>
    <!--NeedCopy-->
    
  3. 复制 ?id_token_hint= 后面的 base64 字符串,其中包含一个 JWT。示例取自 FireFox 开发工具。

    Okta OIDC EndSession

将此 base64 字符串粘贴到 https://jwt.io 中的 Encoded Value JSON WEB TOKEN (JWT) 字段中,以检查 Citrix Cloud 从您的 Okta OIDC 应用程序收到的声明。 验证 "ctx_user": {} 中是否存在所有必需的声明,并且每个声明都包含登录到 Workspace 的用户的正确用户数据。确保 "ctx_user": {} 中有四个声明,分别名为 "oid"、"email"、"sid""upn"。解码后的 JWT 示例。

Okta OIDC Troubleshooting Example Claims

原因 1

您的 Okta OIDC 应用程序未发送所有四个必需的 cip_* 声明,或者您的 Okta 用户配置文件不包含必需的属性。

解决方案 1

检查您的 Okta OIDC 应用程序配置和 Okta 用户配置文件属性映射。确保您的 Okta OIDC 应用程序正在发送正确的声明。使用声明名称 cip_upn、cip_email、cip_sidcip_oid。所有声明名称都必须是小写。

原因 2

您错误地配置了 DaaS 交付组,并将资源映射到 Okta 身份而不是 Active Directory 身份。

解决方案 2

将已加入 AD 域的交付组和 VDA 映射到 Active Directory 身份,而不是 Okta 身份。仅将 Okta 身份用于启动未加入域的资源。

Okta OIDC Select Active Directory

将交付组配置为根据 AD 用户和组限制资源使用

Okta OIDC Maps All Users

原因 3

您未按照 Citrix Cloud 的要求使用 AD Universal Groups,或者您的 Citrix Cloud Connector 未加入正确的 AD 域级别。有关详细信息,请参阅本文:Citrix Cloud Connector 技术详细信息

解决方案 3

在将用户分配给 DaaS 资源时使用通用组

或者,

将 Workspace 用户直接分配给交付组。

将 Okta 作为身份提供程序连接到 Citrix Cloud