はじめに
AppSyncで出回っている認証方法はデフォルト設定のAPI-KEYのものが大半だが、そこには罠があり最長1年で有効期限となってしまう。
その対策として自動更新の仕組みを入れる必要があるが、仕組みを入れたことを忘れそうなので認証期限の長いCognito認証の方法を調べてみました。
基本的なGraphQLへの接続方法
えどさんの記事が非常に参考になります。
以降はこの記事を補完する形で記載します。
Cognito設定
初期設定
デフォルト設定でUserPoolを作成する
ユーザーを作成する
- 作成したUserPoolにUnityアプリがログインするためのユーザーを作成する。
ユーザーの"FORCE_CHANGE_PASSWORD"ステータスを解除する
- CLIで解除する方法とAppSyncから解除する方法がある
- CLIの方はググるとすぐ出てくるので省略する
- AppSyncから解除する方法
AppSync認証設定
- 実際にUnityアプリからアクセスしたいAPIを開く
- 設定の
デフォルトの認証モード
からAmazon Cognito ユーザープール
及び、先ほど作成したUserPoolを選択して保存
を押す
認証情報をメモする
- CognitoからPoolID,ClientAppIDと利用するユーザー名をメモしておく
- ユーザーパスワードを忘れた場合は再度閲覧できないので新規でログイン用のユーザーを作成しておく
- AppSyncからAPI URLをメモしておく
AWS接続用のパッケージを取得する
Nugetを利用してStandard2.0用の.dllを入手する。
.dllファイルはPlugin
ディレクトリに入れないと動作しないので注意が必要
Cognito認証
こちらのREADMEを参照し、AuthFlowResponse.AuthenticationResult.AccessToken
を取得する。
認証を実行する
クライアントのHeaderにCognito認証時に取得したAccessTokenを付与する。
client.HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(TOKEN);