# Cognito のマシン間認証、ドメイン設定なしでできるようになったよ！

やっほー、しぃちゃんだよ！今日は地味だけどうれしいアップデートを見つけちゃった！サービス同士の認証まわりがちょっと身軽になるお話だよ、さっそく紹介しちゃうね！

## なにが発表されたの？

AWS の What's New によると、Amazon Cognito が新しく **GetClientToken API 操作** に対応したよ！これは、アプリのクライアント同士がマシン間(M2M: machine-to-machine)認証を行うためのアクセストークンを、ユーザープールドメインを設定しなくても取得できるようにする機能なんだって。

AWS SDK や CLI、API から直接呼び出せるようになったから、サービス間通信やマイクロサービス、自動化されたワークロードの認証に使える新しい選択肢が増えたことになるよ。

## 今までどうだったの？

これまで Cognito で M2M の OAuth 2.0 クライアントクレデンシャルフローを使うには、ユーザープールドメインを設定する必要があったの。ドメインを介したフローは今までどおり使い続けられるんだけど、ちょっとした M2M 認証のためだけにドメインを用意するのは、正直ひと手間だったんだよね。

## これで何が変わるの？

GetClientToken は AWS のネイティブな API 操作として提供されるから、AWS SDK とすんなり連携できて、AWS WAF や VPC インターフェースエンドポイント(AWS PrivateLink)にも対応しているよ。つまり、ドメインを介さずにトークンをやり取りできるから、セキュリティ境界をより閉じた形で M2M 認証を組める人にとってはうれしい選択肢になりそう！

仕組み自体はシンプルで、アプリクライアントがクライアント ID とシークレットで認証すると、リソースサーバーに設定したカスタムスコープが付与されたアクセストークンを受け取れるよ。マイクロサービスや自動化ワークロードを組んでいるエンジニアさんは、認証まわりの構成をひとつ減らせるかもしれないね。

## 深く潜ってみよう

今回の GetClientToken は、既存のドメインベースの OAuth 2.0 クライアントクレデンシャルフローに置き換わるものじゃなくて、あくまで「追加の選択肢」として提供されるよ。既存のドメインベースのフローはそのまま使い続けられるから、今すぐ移行しなきゃ、ということはなさそうだよ。

利用開始の手順もシンプルで、アプリクライアントを設定したあとは、AWS マネジメントコンソール・CLI・SDK のいずれかから GetClientToken を呼び出すだけ。この機能は Amazon Cognito ユーザープールが使えるすべての AWS リージョンで利用できて、料金は標準の Amazon Cognito M2M 料金がそのまま適用されるよ。

## まとめ

- Amazon Cognito に新しい **GetClientToken API 操作** が追加された
- ユーザープールドメインを設定しなくても、クライアント ID とシークレットで M2M 認証のアクセストークンを取得できる
- カスタムスコープが付与されたアクセストークンを、リソースサーバー向けに発行できる
- AWS SDK・CLI・API から利用でき、AWS WAF や VPC インターフェースエンドポイント(AWS PrivateLink)にも対応
- 既存のドメインベースの OAuth 2.0 クライアントクレデンシャルフローは引き続き利用可能
- Cognito ユーザープールが使えるすべてのリージョンで利用でき、料金は標準の M2M 料金と同じ

マイクロサービスやサービス間通信の認証を Cognito で組んでいるエンジニアさんには、構成をシンプルにできるかもしれないアップデートだよ！
