

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 外部認証を使用する
<a name="external-authentication"></a>

デフォルトでは、Amazon DCV クライアント認証は基盤となるオペレーティングシステムに委譲されます。Windows Amazon DCV サーバーの場合、認証は WinLogon に委譲されます。Linux および macOS Amazon DCV サーバーでは、認証は Linux PAM に委任されます。

外部認証サーバーを使用してクライアントを認証するように Amazon DCV を設定することができます。その場合は既存の認証システムを使用できます。外部認証の場合は、Amazon DCV で既存のログインメカニズムを活用し、認証を外部認証サーバーに委譲します。

外部認証は、DCV サーバーへのアクセス権を持つユーザーを検証して、セッションを作成できるようにします。**システム**認証とは異なり、独自の外部認証システムをそのように設定しない限り、基盤となる OS に対してユーザーを認証することはありません。

[DCV セッションマネージャー](https://docs.aws.amazon.com/dcv/latest/sm-admin/what-is-sm.html)には外部認証システムが組み込まれています。この機能を使用するには、DCV サーバーで [auth-token-verifier](https://docs.aws.amazon.com/dcv/latest/sm-admin/configure-dcv-server.html) パラメータにセッションマネージャーアドレスを設定する必要があります。

外部認証サーバーを使用するには、以下が必要です。
+ **ログインメカニズム** — これは、ユーザーがログインに使用するフロントエンドメカニズムです。既存の認証情報検証システムを使用してユーザーを検証する機能と、トークンを生成して Amazon DCV サーバーに提供できる機能を備えています。詳細については、「[トークンの使用](#using-token)」を参照してください。
+ **認証サーバー** — これは、ログインメカニズムによって生成されたトークンを認証するサーバーです。このサーバーでは、トークンを含む HTTP(S) POST リクエストを Amazon DCV サーバーから受信し、必要な認証を実行して、応答を Amazon DCV サーバーに送信できます。認証サーバーの実装の詳細については、「[認証サービス要件](#configure-authenticator)」を参照してください。
+ **Amazon DCV サーバー設定** — 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. [セキュリティパラメータ](config-param-ref.md#security)で **auth-token-Verifier** パラメータを探します。

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. Amazon DCV サーバーを[停止](manage-stop.md)して[再起動](manage-start.md)します。

------
#### [ 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 サーバーに送信できます。ウェブブラウザクライアントで、次のようにトークンを接続 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` の認証結果が返されます。