使用外部身份验证 - NICE DCV

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

使用外部身份验证

默认情况下,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