Linux Virtual Delivery Agent

使用 Azure Active Directory 进行身份验证

注意:

此功能仅适用于 Azure 托管的 VDA。

根据您的需求,可以在 Azure 中部署两种类型的 Linux VDA:

  • 加入了 Azure AD DS 的 VM。VM 已加入到 Azure Active Directory (AAD) 域服务 (DS) 托管的域。用户使用其域凭据登录 VM。
  • 未加入域的 VM。VM 与 AAD 标识服务集成以提供用户身份验证。用户使用其 AAD 凭据登录 VM。

有关 AAD DS 和 AAD 的详细信息,请参阅这篇 Microsoft 文章

本文介绍了如何在未加入域的 VDA 上启用和配置 AAD 标识服务。

支持的发行版

  • Ubuntu 22.04、20.04、18.04
  • RHEL 8.7、8.6、8.4、7.9
  • SUSE 15.4

有关详细信息,请参阅这篇 Microsoft 文章

已知问题及解决方法

在 RHEL 7.9 中,在执行 AAD 用户身份验证之后,PAM(Pluggable Authentication Module,可插拔身份验证模块)pam_loginuid.so 无法设置 loginuid。此问题会阻止 AAD 用户访问 VDA 会话。

要解决此问题,请在 /etc/pam.d/remote 中注释掉行 Session required pam_loginuid.so。有关示例,请参见以下屏幕截图。

已知问题的解决方法

步骤 1:在 Azure 门户上创建模板 VM

创建模板 VM 并在 VM 上安装 Azure CLI。

  1. 在 Azure 门户上,创建模板 VM。在单击检查 + 创建之前,请务必在管理选项卡上选择 Login with Azure AD(使用 Azure AD 登录)。

    用于启用通过 AAD 登录的设置

  2. 在模板 VM 上安装 Azure CLI。 有关详细信息,请参阅这篇 Microsoft 文章

步骤 2:在模板 VM 上准备主映像

要准备主映像,请在使用 Machine Creation Services (MCS) 创建 Linux VDA 中执行步骤 3:准备主映像

步骤 3:将模板 VM 设置为未加入域的模式

创建主映像后,请按照以下步骤将 VM 设置为未加入域的模式:

  1. 从命令提示符运行以下脚本:

    Modify /var/xdl/mcs/mcs_util.sh
    <!--NeedCopy-->
    
  2. 找到 function read_non_domain_joined_info(),然后将 NonDomainJoined 的值更改为 2。有关示例,请参阅以下代码块。

    function read_non_domain_joined_info()
    {
    log "Debug: Enter read_non_domain_joined_info"
    # check if websocket enabled
    TrustIdentity=`cat ${id_disk_mnt_point}${ad_info_file_path} | grep '[TrustIdentity]' | sed 's/\s//g'`
    if [ "$TrustIdentity" == "[TrustIdentity]" ]; then
    NonDomainJoined=2
    fi
    ...
    }
    <!--NeedCopy-->
    
  3. 保存更改。

  4. 关闭模板 VM。

步骤 4:从模板 VM 创建 Linux VM

准备好未加入域的模板 VM 后,请按照以下步骤创建 VM:

  1. 登录 Citrix Cloud。

  2. 双击 Citrix DaaS,然后访问完整配置管理控制台。

  3. 计算机目录中,选择使用 Machine Creation Services 从模板 VM 创建 Linux VM。有关详细信息,请参阅 Citrix DaaS 文档中的未加入域的 VDA

步骤 5:将 AAD 用户帐户分配给 Linux VM

创建未加入域的 VM 后,为其分配 AAD 用户帐户。

要将 AAD 用户帐户分配给 VM,请执行以下步骤:

  1. 使用管理员帐户访问 VM。
  2. Identify(识别)> System assigned(系统分配)选项卡上,启用 System Identity(系统标识)。

    用于启用通过 AAD 登录的设置

  3. Access control (IAM)(访问控制(IAM))> Role assignments(角色分配)选项卡上,找到 Virtual Machine User Login(虚拟机用户登录)区域,然后根据需要添加 AAD 用户帐户。

    用于启用通过 AAD 登录的设置

登录到未加入域的 VDA

贵组织中的最终用户可以通过两种方式登录未加入域的 VDA。详细步骤如下所示:

  1. 启动 Workspace 应用程序,然后通过输入 AAD 用户名和密码登录到 Workspace。此时将显示 Workspace 页面。
  2. 双击未加入域的桌面。此时将显示 AAD 登录页面。

    该页面因 VDA 上设置的登录模式而异:设备代码或 AAD 帐户/密码。默认情况下,Linux VDA 使用设备代码登录模式对 AAD 用户进行身份验证,如下所示。作为管理员,您可以根据需要将登录模式更改为 AAD 帐户/密码。有关详细步骤,请参阅以下部分。

    用于启用通过 AAD 登录的设置

  3. 根据屏幕上的说明,通过以下方式之一登录到桌面会话:
    • 扫描 QR 代码并输入该代码。
    • 输入 AAD 用户名和密码。

更改为 AAD 帐户/密码登录模式

默认情况下,Linux VDA 使用设备代码对 AAD 用户进行身份验证。有关详细信息,请参阅这篇 Microsoft 文章。要将登录模式更改为 AAD 帐户/密码,请执行以下步骤:

在 VDA 上运行以下命令,找到注册表项 AADAcctPwdAuthEnable,然后将其值更改为 0x00000001

/opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Services\CitrixBrokerAgent\WebSocket" -t "REG_DWORD" -v "AADAcctPwdAuthEnable" -d "0x00000001" --force

<!--NeedCopy-->

注意:

此方法不适用于 Microsoft 帐户或启用了双重身份验证的帐户。