

# ステップ 3: チャットトークンを作成する
<a name="getting-started-chat-auth"></a>

チャット参加者がルームに接続してメッセージの送受信を開始するには、チャットトークンを作成する必要があります。チャットトークンは、チャットクライアントの認証と認可に使用されます。

この図は、IVS Chat トークンを作成するためのワークフローを示しています。

![\[新しく作成したチャットルームのクライアントを認証し、認可します。\]](http://docs.aws.amazon.com/ja_jp/ivs/latest/ChatUserGuide/images/Chat_Getting_Started_Auth.png)


上記のように、クライアントアプリケーションはサーバー側のアプリケーションにトークンを要求し、サーバー側のアプリケーションは AWS SDK または [SigV4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) 署名付きリクエストを使用して CreateChatToken を呼び出します。AWS 認証情報が API の呼び出しに使用されるため、トークンはクライアント側のアプリケーションではなく、安全なサーバー側のアプリケーションで生成する必要があります。

トークン生成のデモンストレーションを行うバックエンドサーバーアプリケーションは、[Amazon IVS Chat デモバックエンド](https://github.com/aws-samples/amazon-ivs-chat-web-demo/tree/main/serverless)で入手可能です。

*セッション期間*とは、確立されたセッションが自動的に終了されるまでのアクティブな状態を維持できる期間を指します。つまり、セッション期間は、新しいトークンを生成して新しい接続を確立する必要が生じる前に、クライアントがチャットルームに接続したままにできる期間です。オプションでは、トークンの作成中に、セッション期間を指定できます。

エンドユーザーの接続を確立するために、各トークンは一度だけ使用できます。接続が終了した場合、接続を再確立する前に、新しいトークンを作成する必要があります。トークン自体は、応答に含まれるトークンの有効期限のタイムスタンプまで有効です。

エンドユーザーがチャットルームに接続する場合、クライアントはサーバーアプリケーションにトークンを要求する必要があります。サーバーアプリケーションはトークンを作成し、それをクライアントに返します。トークンはオンデマンドでエンドユーザー向けに作成する必要があります。

チャット認証トークンを作成するには、以下の手順に従います。チャットトークンを作成する際は、リクエストフィールドを使用してチャットエンドユーザーとエンドユーザーのメッセージング機能に関するデータを渡します。詳細については、「*IVS Chat API Reference*」の「[CreateChatToken](https://docs.aws.amazon.com//ivs/latest/ChatAPIReference/API_CreateChatToken.html)」を参照してください。

## AWS SDK での手順
<a name="auth-sdk"></a>

AWS SDK を使用してチャットトークンを作成するには、最初にアプリケーションに SDK をダウンロードして設定する必要があります。以下は、JavaScript による AWS SDK の手順です。

**重要:** このコードは、サーバー側で実行し、その出力をクライアントに渡す必要があります。

**前提条件**: 以下のコードサンプルを使用するには、AWS JavaScript SDK をアプリケーションにロードする必要があります。詳細については、[Getting started with the AWS SDK for JavaScript](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/getting-started.html) を参照してください。

```
async function createChatToken(params) {
  const ivs = new AWS.Ivschat();
  const result = await ivs.createChatToken(params).promise();
  console.log("New token created", result.token);
}
/*
Create a token with provided inputs. Values for user ID and display name are 
from your application and refer to the user connected to this chat session.
*/
const params = {
  "attributes": {
    "displayName": "DemoUser",
  }",
  "capabilities": ["SEND_MESSAGE"],
  "roomIdentifier": "arn:aws:ivschat:us-west-2:123456789012:room/g1H2I3j4k5L6",
  "userId": 11231234
};
createChatToken(params);
```

## CLI の手順
<a name="auth-cli"></a>

AWS CLI を使用してチャットトークンを作成することは詳細オプションであり、最初に CLI をダウンロードしてマシンに設定する必要があります。詳細については、「[AWS Command Line Interface のユーザーガイド](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)」を参照してください。注: AWS CLI を使用したトークンの生成はテスト目的の場合は問題ありませんが、本番環境で使用する場合は、AWS SDK を使用してサーバー側でトークンを生成することをお勧めします (上記の手順を参照)。

1. クライアントのルーム識別子およびユーザ ID とともに `create-chat-token` のコマンドを実行します。以下のいずれかの機能を含めます: `"SEND_MESSAGE"`、`"DELETE_MESSAGE"`、`"DISCONNECT_USER"`。(オプションで、このチャットセッションに関するセッション期間 (分単位) やカスタム属性 (メタデータ) を含めます。これらのフィールドは以下には表示されません。)

   ```
   aws ivschat create-chat-token --room-identifier "arn:aws:ivschat:us-west-2:123456789012:room/g1H2I3j4k5L6" --user-id "11231234" --capabilities "SEND_MESSAGE"
   ```

1. これはクライアントトークンを返します。

   ```
   {
     "token": "abcde12345FGHIJ67890_klmno1234PQRS567890uvwxyz1234.abcd12345EFGHI67890_jklmno123PQRS567890uvwxyz1234abcde12345FGHIJ67890_klmno1234PQRS567890uvwxyz1234abcde",
     "sessionExpirationTime": "2022-03-16T04:44:09+00:00",
     "tokenExpirationTime": "2022-03-16T03:45:09+00:00"
   }
   ```

1. このトークンを保存します。チャットルームに接続し、メッセージを送受信するには、これが必要です。セッションが終了する前に、別のチャットトークンを生成する必要があります (`sessionExpirationTime` で示されています)。