LoginSignup
0
0

More than 1 year has passed since last update.

UnityからCognitoUserPool認証を使用してAppSyncに接続する

Last updated at Posted at 2022-08-03

はじめに

AppSyncで出回っている認証方法はデフォルト設定のAPI-KEYのものが大半だが、そこには罠があり最長1年で有効期限となってしまう。
その対策として自動更新の仕組みを入れる必要があるが、仕組みを入れたことを忘れそうなので認証期限の長いCognito認証の方法を調べてみました。

基本的なGraphQLへの接続方法

えどさんの記事が非常に参考になります。
以降はこの記事を補完する形で記載します。

Cognito設定

初期設定

デフォルト設定でUserPoolを作成する

  • アプリクライアントを作成する
    • トークンの期限を設定する(Max10年)
    • クライアントシークレットを生成のチェックを外す
      image.png

ユーザーを作成する

  • 作成したUserPoolにUnityアプリがログインするためのユーザーを作成する。
    • パスワードは以後見れなくなるのでメモしておくこと
    • 作成直後は"FORCE_CHANGE_PASSWORD"ステータスになっており、このままではログインできないので注意。
      image.png

ユーザーの"FORCE_CHANGE_PASSWORD"ステータスを解除する

  • CLIで解除する方法とAppSyncから解除する方法がある
    • CLIの方はググるとすぐ出てくるので省略する
  • AppSyncから解除する方法
    1. AppSyncで新規のAPIを作成する
    2. 設定のデフォルトの認証モードからAmazon Cognito ユーザープール及び、先ほど作成したUserPoolを選択して保存を押す
    3. 左側のメニューのクエリを選択するとユーザープールでログインボタンが表示されるようになっているので、先ほど作成したユーザーでログインする
      image.png
    4. CognitoのUserPoolからユーザーの一覧を確認するとステータスがCONFIRMEDに変わっていることを確認する。

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);
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0