

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用外部身分驗證
<a name="external-authentication"></a>

根據預設，Amazon DCV 用戶端身分驗證會委派給基礎作業系統。使用 Windows Amazon DCV 伺服器時，身分驗證會委派給 WinLogon。使用 Linux 和 macOS Amazon DCV 伺服器時，身分驗證會委派給 Linux PAM。

您可以設定 Amazon DCV 使用外部身分驗證伺服器來驗證用戶端。這可讓您使用現有的身分驗證系統。透過外部身分驗證，Amazon DCV 會利用您現有的登入機制，並將身分驗證委派給外部身分驗證伺服器。

外部身分驗證會驗證具有 DCV 伺服器存取權的使用者，以啟用工作階段建立的使用。除非您設定自己的外部身分驗證器，否則它不會像**系統**身分驗證一樣，針對基礎作業系統對使用者進行身分驗證。

[DCV Session Manager](https://docs.aws.amazon.com/dcv/latest/sm-admin/what-is-sm.html) 隨附內建的外部驗證器。若要使用此功能，您的 DCV 伺服器將需要使用 Session Manager 地址設定 [auth-token-verifier](https://docs.aws.amazon.com/dcv/latest/sm-admin/configure-dcv-server.html) 參數。

若要使用外部身分驗證伺服器，您必須備妥下列項目：
+ **登入機制** — 這是您的使用者用來登入的前端機制。它應該能夠使用您現有的登入資料驗證系統來驗證您的使用者，並且應該能夠產生字符並將其提供給 Amazon DCV 伺服器。如需詳細資訊，請參閱[使用字符](#using-token)。
+ **身分驗證伺服器 **- 這是驗證登入機制產生字符的伺服器。此伺服器應該能夠從 Amazon DCV 伺服器接收 HTTP(S) POST 請求，其中包含權杖、執行必要的身分驗證，然後將回應傳回 Amazon DCV 伺服器。如需實作身分驗證伺服器的詳細資訊，請參閱 [身分驗證服務需求](#configure-authenticator)。
+ **Amazon DCV Server 組態**—Amazon DCV 伺服器必須設定為使用外部身分驗證伺服器。如需詳細資訊，請參閱[Amazon DCV 伺服器組態](#configure-server)。

**Topics**
+ [Amazon DCV 伺服器組態](#configure-server)
+ [使用字符](#using-token)
+ [身分驗證服務需求](#configure-authenticator)

## Amazon DCV 伺服器組態
<a name="configure-server"></a>

您必須設定 Amazon DCV 伺服器以使用外部身分驗證服務。

------
#### [ Windows Amazon DCV server ]

**在 Windows 上指定外部身分驗證伺服器**

1. 開啟 Windows 登錄編輯程式。

1. 導覽至 **HKEY\_USERS\\S-1-5-18\\Software\\GSettings\\com\\nicesoftware\\dcv\\** 金鑰。

1. 在安全參數中尋找 **auth-token-verifier** 參數。 [`security` 參數](config-param-ref.md#security)

1. 執行以下任意一項：
   + 對於**值資料**，輸入外部身分驗證伺服器的 URL 和要通訊的連接埠，格式如下：`{{url}}:{{port}}`。  
**Example**  

     例如，如果您使用的是 DcvSimpleExternalAuthenticator，請指定下列項目：`{{http://127.0.0.1}}:{{8444}}`。
   + 如果安全區段中沒有 **auth-token-verifier** 參數，請在 PowerShell 中新增它。請參閱[修改組態參數](https://docs.aws.amazon.com/dcv/latest/adminguide/config-param-ref-modify.html)。

1. 關閉 Windows 登錄編輯程式。

1. [停止](manage-stop.md)並[重新啟動](manage-start.md) Amazon DCV 伺服器。

------
#### [ Linux Amazon DCV server ]

**在 Linux 上指定外部身分驗證伺服器**

1. 導覽至 `/etc/dcv/`，然後使用您徧好的文字編輯器開啟 `dcv.conf`。

1. 在 `[security]`區段中尋找 `auth-token-verifier` 參數，並以外部身分驗證伺服器的 URL 和要通訊的連接埠取代現有值，格式如下：`{{url}}:{{port}}`。例如，如果您使用的是 DcvSimpleExternalAuthenticator，請指定下列項目：`{{http://127.0.0.1}}:{{8444}}`。

   如果 `auth-token-verifier` 區段中沒有 `[security]` 參數，請使用下列格式新增此參數：

   ```
   [security] auth-token-verifier={{url}}:{{port}}
   ```

1. 儲存並關閉檔案。

------
#### [ macOS Amazon DCV server ]

**在 macOS 上指定外部身分驗證伺服器**

1. 導覽至 `/etc/dcv/`，然後使用您徧好的文字編輯器開啟 `dcv.conf`。

1. 在 `[security]`區段中尋找 `auth-token-verifier` 參數，並以外部身分驗證伺服器的 URL 和要通訊的連接埠取代現有值，格式如下：`{{url}}:{{port}}`。例如，如果您使用的是 DcvSimpleExternalAuthenticator，請指定下列項目：`{{http://127.0.0.1}}:{{8444}}`。

   如果 `auth-token-verifier` 區段中沒有 `[security]` 參數，請使用下列格式新增此參數：

   ```
   [security] auth-token-verifier={{url}}:{{port}}
   ```

1. 儲存並關閉檔案。

------

## 使用字符
<a name="using-token"></a>

產生字符後，您必須能夠將其傳送至 Amazon DCV 伺服器。使用 Web 瀏覽器用戶端，將字符附加到連線 URL，如下所示：

```
https://{{server_hostname_or_IP}}:{{port}}/?authToken={{token}}#{{session_id}}
```

例如：

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

## 身分驗證服務需求
<a name="configure-authenticator"></a>

您的自訂身分驗證服務可以在 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
<a name="simple-auth"></a>

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 伺服器](setting-up-installing-linux-server.md#linux-server-install)。

### 使用簡易外部驗證器
<a name="usage"></a>



1. 導覽至您的身分驗證目錄。

   `sudo mkdir -p /var/run/dcvsimpleextauth`

1. 產生您的身分驗證字符。  
**Example**  

   在此範例中， `123456`是範例驗證器字符， `session-123`是範例工作階段 ID， `username`是使用者。

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

1. 啟動您的伺服器。

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

1. 伺服器執行後，請測試組態以進行驗證。  
**Example**  

   再次使用此範例，測試將執行如下：

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

   如果成功，您將收到 的身分驗證結果`yes`。