使用外部身份验证 - NICE DCV
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用外部身份验证

默认情况下,NICE DCV 客户端身份验证委派给底层操作系统。对于 Windows NICE DCV 服务器,将身份验证委托给。 WinLogon对于 Linux NICE DCV 服务器,身份验证委派给 Linux PAM。

您可以将 NICE DCV 配置为使用外部身份验证服务器对客户端进行身份验证。这样,您就可以使用现有的身份验证系统了。对于外部身份验证,NICE DCV 利用您的现有登录机制,并将身份验证委派给外部身份验证服务器。

外部身份验证验证用户是否具有 DCV 服务器访问权限,从而决定是否允许使用会话创建功能。与系统身份验证不同,外部身份验证不会根据底层操作系统验证您的用户身份,除非您将自己的外部身份验证器设置为这样做。

DCV Session Manager 内置一个外部身份验证器。要使用此功能,您的 DCV 服务器需要使用会话管理器地址设置auth-token-verifier参数。

要使用外部身份验证服务器,您必须具备以下条件:

  • 登录机制 - 这是用户登录时使用的前端机制。它应该能够使用现有的凭证验证系统验证您的用户,并且应该能够生成令牌并将其提供给 NICE DCV 服务器。有关更多信息,请参阅使用令牌

  • 身份验证服务器 - 这是对登录机制生成的令牌进行身份验证的服务器。该服务器应该能够从 NICE DCV 服务器接收包含令牌的 HTTP(S) POST 请求,执行必要的身份验证,然后将响应发回到 NICE DCV 服务器。有关实施身份验证服务器的更多信息,请参阅身份验证服务要求

  • NICE DCV 服务器配置 - NICE DCV 服务器必须配置为使用外部身份验证服务器。有关更多信息,请参阅NICE DCV 服务器配置

NICE DCV 服务器配置

您必须将 NICE DCV 服务器配置为使用外部身份验证服务。

Linux NICE DCV server
在 Linux 上指定外部身份验证服务器
  1. 导航到 /etc/dcv/,并使用您常用的文本编辑器打开 dcv.conf

  2. 找到 [security] 部分中的 auth-token-verifier 参数,并将现有值替换为外部身份验证服务器的 URL 和用于通信的端口,格式如下所示:url:port。例如,如果您使用的是DcvSimpleExternalAuthenticator,请指定以下内容:http://127.0.0.1:8444

    如果 auth-token-verifier 部分中没有 [security] 参数,则使用以下格式手动添加此参数:

    [security] auth-token-verifier=url:port
  3. 保存并关闭文件。

Windows NICE DCV server
在 Windows 上指定外部身份验证服务器
  1. 打开 Windows 注册表编辑器。

  2. 导航到 HKEY_USERS/S-1-5-18/Software/GSettings/com/nicesoftware/dcv/ 项。

  3. 安全auth-token-verifier参数中找到该参数

  4. 请执行以下操作之一:

    • 对于值数据,输入外部身份验证服务器的 URL 和用于通信的端口,格式如下所示:url:port

      例如,如果您使用的是 DcvSimpleExternalAuthenticator,请指定以下内容:http://127.0.0.1:8444

    • 如果安全部分中没有auth-token-verifier参数,请将其添加到 PowerShell。请参阅修改配置参数

  5. 关闭 Windows 注册表编辑器。

  6. 停止重新启动 NICE DCV 服务器。

使用令牌

在生成令牌后,您必须能够将其发送到 NICE DCV 服务器。对于 Web 浏览器客户端,将令牌附加到连接 URL 中,如下所示:

https://server_hostname_or_IP:port/?authToken=token#session_id

例如:

https://my-dcv-server.com:8443/?authToken=1234567890abcdef#my-session

身份验证服务要求

您的自定义身份验证服务可以在 NICE DCV 服务器的同一主机上运行,也可以在单独的主机上运行。身份验证服务必须侦听来自 NICE DCV 服务器的 HTTP(S)POST 请求。

下面显示了 NICE DCV 服务器使用的 POST 请求格式。

POST / HTTP/1.1 Content-Type: application/x-www-form-urlencoded sessionId=session_id&authenticationToken=token&clientAddress=client_address

您的身份验证服务负责确定提供的令牌是否有效。

在验证令牌后,身份验证服务器必须将响应返回到 NICE DCV 服务器。响应正文必须包含以下内容之一,具体取决于身份验证过程的结果:

  • 如果身份验证成功,身份验证服务将返回结果 yes 和用户标识符。例如:

    <auth result="yes"><username>username</username></auth>
  • 如果身份验证失败,身份验证服务将返回结果 no。例如:

    <auth result="no"><message>message</message></auth>

DcvSimpleExternalAuthenticator

NICE DCV 附带一个名为 DcvSimpleExternalAuthenticator 的参考外部身份验证服务器。DcvSimpleExternalAuthenticator 是一个 Python 脚本,您可以使用它作为创建自己的自定义身份验证服务器的起点。

DcvSimpleExternalAuthenticator 服务器支持 HTTP 和 HTTPS,并且必须运行在安装了 NICE DCV 服务器的同一台服务器上。默认情况下,DcvSimpleExternalAuthenticator 监听端口8444上的请求。如果需要,您可以更改端口。为此,请使用常用的文本编辑器打开 /etc/dcv/simpleextauth.conf,找到 EXTAUTH_PORT 参数,然后将现有值替换为所需的端口号。

要使用 DcvSimpleExternalAuthenticator,必须安装nice-dcv-simple-external-authenticator软件包。有关更多信息,请参阅安装 NICE DCV 服务器

使用简单外部身份验证器

  1. 导航到您的身份验证目录。

    sudo mkdir -p /var/run/dcvsimpleextauth

  2. 生成您的身份验证令牌。

    在该示例中,123456 是示例身份验证器令牌,session-123 是示例会话 ID,username 是用户。

    echo "123456" | sudo dcvsimpleextauth add-user —session session-123 --auth-dir /var/run/dcvsimpleextauth/ --user username -append

  3. 启动您的服务器。

    sudo dcvsimpleextauth --port 8444 --auth-dir /var/run/dcvsimpleextauth/ start-server

  4. 在服务器运行后,测试配置以进行验证。

    再次使用该示例,测试将按以下方式运行:

    curl -k http://localhost:8444 -d sessionId=session-123 -d authenticationToken=123456

    如果成功,您将收到身份验证结果 yes