使用外部身份验证 - Amazon DCV

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

使用外部身份验证

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

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

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

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

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

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

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

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

亚马逊DCV服务器配置

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

Linux Amazon 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 Amazon DCV server
在 Windows 上指定外部身份验证服务器
  1. 打开 Windows 注册表编辑器。

  2. 导航到 HKEY_ USERS /S-1-5-18/Software/ /com/nicesof GSettings tware/dcv/ 键。

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

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

    • 对于值数据,请按以下URL格式输入外部身份验证服务器的和要通信的端口:url:port

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

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

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

  6. 停止重启 Amazon DCV 服务器。

使用令牌

生成令牌后,您必须能够将其发送到 Amazon DCV 服务器。使用 Web 浏览器客户端,按URL如下方式将令牌附加到连接中:

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

例如:

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

身份验证服务要求

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

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

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

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

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

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

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

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

DcvSimpleExternalAuthenticator

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

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

要使用 DcvSimpleExternalAuthenticator,必须安装nice-dcv-simple-external-authenticator软件包。有关更多信息,请参阅 安装 Amazon 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