# 認証

> Authenticate Cloud Code requests with player identities.

Cloud Code は、認証されたリクエストのみを受け入れます。

認証により、プレイヤー ID を使用して、ゲーム内のすべてのインタラクションのセキュリティ、一貫性、安全性を確保できます。

Cloud Code で認証するには、以下の認証方法を使用できます。

| リクエスト発生元                                     | 認証方法                                                                                                      |
| -------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| 信頼されていないクライアント (プレイヤー)                       | [Unity Authentication](/authentication.md) サービスを使用します。                                                    |
| 信頼されているクライアント (ゲームサーバー、インテグレーションテスト、ローカルマシン) | [サービスアカウント認証](https://services.docs.unity.com/docs/service-account-auth/) または Multiplay Hosting 認証を使用します。 |

## プレイヤーの認証##authenticate-players

[Unity Authentication](/authentication.md) は、プレイヤーに一意の ID を割り当て、さまざまな認証方法を提供します。

> **Note:**
>
> **ノート**: サポートされているプラットフォーム (モバイルと PC を含む) 向けの [匿名認証](/authentication/use-anon-sign-in.md) と [プラットフォーム固有の認証](/authentication/approaches-to-authentication.md) のソリューションに Unity Authentication を使用できます。

Cloud Code スクリプトは、`accessToken` プロパティを含む `context` オブジェクトを提供します。このアクセストークンは、スクリプトを呼び出すプレイヤーの認証に使用する [JWT](https://jwt.io/introduction) です。

スクリプト内で `accessToken` を使用する方法の詳細については、[アクセストークンのサポート](./token-support.md#access-token-support) ドキュメントを参照してください。

### アクセスの制限##restrict-access

特定のスクリプトへのアクセスを制限する場合は、ロールベースのアクセス制御 (RBAC) ルールを使用できます。

これらのルールでは、プレイヤーに追加のリソースを付与する 1 回限りのサポートスクリプトなど、特殊なスクリプトをプレイヤーが実行できないようにすることができます。詳細については、[アクセス制御](./access-control.md) のドキュメントを参照してください。

> **Note:**
>
> **ノート**: セキュリティのために、Unity Authentication サービスが [Cloud Code Client API](https://services.docs.unity.com/cloud-code/v1/index.html#tag/cloud-code) で生成する JWT のみを使用できます。これらの呼び出しを [Cloud Code Admin API](https://services.docs.unity.com/cloud-code-admin/v1/#tag/cloud-code-modules) に対して行った場合、Cloud Code サービスはこれらを拒否します。

## 信頼されているクライアントの認証##authenticate-trusted-clients

Client Cloud Code API と Admin Cloud Code API はどちらも [サービスアカウント認証](https://services.docs.unity.com/docs/service-account-auth/) とともに使用できます。

これにより、Cloud Code を使用できるさまざまな方法を利用できるようになります。

* ローカルマシンからスクリプトを記述します。
* スクリプトを記述して CI/CD パイプラインから実行します。
* ゲームサーバーからスクリプトを実行します。
* インテグレーションテストでスクリプトを実行します。

Bearer (JWT) 認証と Basic 認証の両方にサービスアカウントを使用できます。詳細については、[サービスアカウント認証](https://services.docs.unity.com/docs/service-account-auth/) のドキュメントを確認してください。

### Cloud Code Admin API (Basic 認証)##cloud-code-admin-api-basic-authentication

[Cloud Code Admin API](https://services.docs.unity.com/cloud-code-admin/v1/#tag/cloud-code-scripts) にアクセスするには、[Basic 認証](https://services.docs.unity.com/docs/service-account-auth/#authenticate-an-api-using-service-account-credentials) を使用します。

サービスアカウント認証情報を直接使用するには、`<KEY_ID>:<SECRET_KEY>` を base64 でエンコードします。サービスアカウントに適切な権限を付与する必要もあります。Cloud Code の権限とロールの詳細については、以下の表を参照してください。

| アクセス権              | ロール                                                                                                          |
| ------------------ | ------------------------------------------------------------------------------------------------------------ |
| スクリプトの読み取り         | [Cloud Code 閲覧者](https://services.docs.unity.com/docs/service-account-auth/#cloud-code-viewer)               |
| スクリプトの読み取り/書き込み/削除 | [Cloud Code 編集者](https://services.docs.unity.com/docs/service-account-auth/#cloud-code-editor)               |
| スクリプトの公開           | [Cloud Code パブリッシャー](https://services.docs.unity.com/docs/service-account-auth/#cloud-code-script-publisher) |

### Cloud Code Client API (Bearer 認証)##cloud-code-client-api-bearer-authentication

[Cloud Code Client API](https://services.docs.unity.com/cloud-code/v1/index.html#tag/cloud-code) にアクセスするには、[Token Exchange API](https://services.docs.unity.com/auth/v1/#tag/authentication/operation/exchangetostateless) で Bearer 認証を使用して、制限された生存期間でステートレストークンを取得します。

> **Note:**
>
> **ノート**: Token Exchange API では、環境 ID のクエリパラメーターが任意であると示されますが、Cloud Code Client API にアクセスしてスクリプトを実行するにはこれを提供する必要があります。

失効したときに [トークンをリフレッシュ](https://services.docs.unity.com/docs/service-account-auth/#refresh-your-stateless-token) するには、同じ API を使用できます。

Cloud Code スクリプトは、`serviceToken` プロパティを含む `context` オブジェクトを提供します。`serviceToken` プロパティは、Cloud Code として認証してクロスプレイヤーデータにアクセスするために使用できる [JWT](https://jwt.io/introduction) です。例えば、このトークンを使用して Cloud Save を呼び出して、別のプレイヤーに代わってデータを保存できます。

スクリプト内で `serviceToken` を使用する方法の詳細については、[サービストークンサポート](./token-support.md#service-token-support) ドキュメントを参照してください。

> **Note:**
>
> **ノート**: Token Exchange API のみを使用して、Client API を呼び出すこともできます。リクエスト内でスコープを指定する必要はありません。

## Multiplay Hosting による認証##authenticate-with-multiplay-hosting

Multiplay Hosting は、サーバーが生成した JWT を使用する追加の認証方法をサポートします。詳細については、[Unity ゲームサーバー (Multiplay) を呼び出す](./run-scripts/game-server.md) 方法を確認してください。
