【NextJS】Cognito with Amplify(Gen2)+SSO(Google)

1. 概要

前回はAWS Amplify(Gen2)を使い、認証(Cognito)を行うのとTodoアプリを実装する内容でした。今回は前回のものにGoogle Signinを追加する内容となります。

対象としては開発を1年程やってて自分で最初から開発してみたい方になります。そのため細かい用語などの説明はしません。

2. 前提条件

2-1. こちらを完了してる事

3. 外部IDプロバイダーを設定(Google)

3-1. Cognitoドメインを取得

  • AWS Console 管理画面
    • Amazon Cognito
      • ユーザープール
        • 「アプリケーションの統合」タブ
          • ドメイン

3-2. 許可リダイレクトURIを設定

https://<Cognitoドメイン>/oauth2/idpresponse

4. Amplifyのシークレット作成(sandbox)

4-1. こちらを参考

npx ampx sandbox secret set GOOGLE_CLIENT_ID
npx ampx sandbox secret set GOOGLE_CLIENT_SECRET
npx ampx sandbox secret list

5. ソースコード

5-1-1. amplify/auth/resource.ts

import { defineAuth, secret } from "@aws-amplify/backend";

/**
 * Define and configure your auth resource
 * @see https://docs.amplify.aws/gen2/build-a-backend/auth
 */
export const auth = defineAuth({
  loginWith: {
    email: true,
    externalProviders: {
      google: {
        clientId: secret("GOOGLE_CLIENT_ID"),
        clientSecret: secret("GOOGLE_CLIENT_SECRET"),
        scopes: ["email"],
      },
      callbackUrls: [
        "http://localhost:3000/",
        "https://main.12345678901234.amplifyapp.com/",
      ],
      logoutUrls: [
        "http://localhost:3000/",
        "https://main.12345678901234.amplifyapp.com/",
      ],
    },
  },
});
  • 「externalProviders」を追加

6. Amplifyのcloud sandboxを立ち上げ

npx ampx sandbox

7. サーバーを起動

npm run dev

8. ブラウザで確認(ローカル)

  • http://localhost:3000
    • 「Sign in with Google」が表示されてる

9. Amplifyのシークレット作成(管理画面)

9-1. 該当プロジェクト

  • ホスティング
    • シークレット
      • GOOGLE_CLIENT_ID
      • GOOGLE_CLIENT_SECRET

10. ローカルからAmplifyへデプロイ

git add .
git commit -am "Added sso of google"
git push

11. ブラウザで確認(Amplifyのデプロイドメイン)

  • https://main.12345678901234.amplifyapp.com/
    • 画面キャッチャーは上記の8を参照

12. 備考

今回はGoogle Signinを追加する内容についてでした。

13. 参考

投稿者プロフィール

Sondon
開発好きなシステムエンジニアです。
卓球にハマってます。

関連記事

  1. 【NextJS】View and Download PDF

  2. 【NextJS】Hooks-useReducer

  3. 【NextJS】Metadata(Head,Title)・Script…

  4. 【NextJS】SnackbarやLink

  5. 【NextJS】Checkbox・Radio Group

  6. 【NextJS】TextField

最近の記事

  1. AWS
  2. AWS
  3. AWS

制作実績一覧

  1. Checkeys