はじめに
使用技術はフロントエンドではReact、バックエンドではGoを使用
Cognitoを使ってユーザーを登録し、Cognitoから取得したアクセストークンを使用してバックエンドで認証。
認証ができたらCognitoからユーザー情報を取得したかったが、そこでAccess Token does not have required scopes
とエラーが出た。
その時の解決方法の備忘録です。
結論
どうやらトークンに含まれているscopes(スコープ)
が足りていないらしい。
必要なスコープを追加することで解決した。
今回使用したいCognitoのAPIはGetUser
でここにアクセスして情報を取得するにはaws.cognito.signin.user.admin
というスコープが必要。
解決方法
ユーザープール -> アプリケーションクライアント -> 任意のアプリケーションを選択 -> ログインページタグ -> 編集を押す
マネージドログインページを編集画面に遷移し、画面を下にスクロールするとOpenID Connectのスコープというフィールドがあります。
トグルを開いてaws.cognito.signin.user.admin
にチェックを入れる
変更を保存するを忘れずに。
これでトークンの中にスコープが含まれようになりますが、今回は一度フロントエンドで取得しバックエンドに渡しているので、フロントエンドにもスコープを定義してあげます。
フロントエンドの.envファイルにも同様にスコープを追加する。
VITE_COGNITO_SCOPE="email openid phone profile aws.cognito.signin.user.admin"
これでアクセストークンに必要なスコープが含まれ、無事にバックエンドからユーザー情報を取得できました!