1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cognitoを使ったソーシャルプロバイダとのID連携(Google)

Posted at

はじめに

今回は、Cognitoを使ったID連携の挙動を確認してみます!

ID連携とは?

シングルサインオンの方が馴染みあるかもですが、ユーザーが複数のサービスを利用する際に同じ一つのIDだけで利用できる仕組みのことです。

「Xでログイン」みたいなやつですね。

やってみます!

今回はGoogleアカウントでのログインで検証してみました。

Google Auth Platformの構成

まずは、Google側の設定をします。
Googleの場合、Google Auth Platformの設定が必要みたいです。

初めて利用する場合、以下のような未構成状態なので、画面案内に沿って構成していきます!

スクリーンショット 2025-05-02 6.09.33.png

アプリ名とユーザサポートメールアドレスの設定
スクリーンショット 2025-05-02 6.10.50.png

対象は今回は外部にしておきます。
スクリーンショット 2025-05-02 6.10.57.png

連絡先の設定。
スクリーンショット 2025-05-02 6.11.17.png

これで完了。
スクリーンショット 2025-05-02 6.11.27.png

データアクセス設定

次に、データアクセスの設定を行います。

ID連携したユーザの情報をどこまで公開するかの設定です。

スクリーンショット 2025-05-02 6.16.35.png

対象は以下を選択します。

  • .../auth/userinfo.email
  • .../auth/userinfo.profile
  • openid

スクリーンショット 2025-05-02 6.18.24.png

クライアント作成

次にクライアントを作成します。

クライアントとは、認証サーバーとやり取りをするアプリケーションのことで、ユーザーの代わりに、認証サーバーからの認証と認可の処理を行ってくれます。

スクリーンショット 2025-05-02 6.19.14.png

アプリケーションの種類はウェブアプリケーションを選択し、名前は適当に設定します。

スクリーンショット 2025-05-02 6.20.32.png

承認済みの JavaScript 生成元及び、承認済みのリダイレクト URIは以下の値を設定します。

項目 設定値
承認済みの JavaScript 生成元 https://[ドメイン名].auth.ap-northeast-1.amazoncognito.com
承認済みのリダイレクト URI https://[ドメイン名].auth.ap-northeast-1.amazoncognito.com/oauth2/idpresponse

スクリーンショット 2025-05-02 6.25.29.png

ドメイン名は以下で確認できますが、カスタムドメインを使わない場合は、ユーザプールIDを入れることになります。

スクリーンショット 2025-05-03 3.45.55.png

ここまで作成すると、クライアントIDとクライアントシークレットが作成されるので、これを覚えておきます。(後からも確認可能です。)

スクリーンショット 2025-05-02 6.25.16.png

これでGC側の設定は完了になります!

Cognitoの設定

次にCognito側の設定をします。

ユーザプールのソーシャルプロバイダーとカスタムプロバイダーアイデンティティプロバイダーの追加からGoogleを追加します。

GC側で作ったクラアントID及びクライアントシークレットを設定し、許可されたスコープにはprofile email openidを設定しておきます。

スクリーンショット 2025-05-03 3.54.10.png

スクリーンショット 2025-05-03 4.01.35.png

属性のマッピングの設定が必要な場合、適切な設定をしておきます。

スクリーンショット 2025-05-03 4.15.33.png

最後にクライアントのIDプロバイダーに先ほど作成したGoogleを追加すれば完了です!

スクリーンショット 2025-05-03 4.17.22.png

動作確認

マネージドログイン画面を表示すると、Googleでサインインが出てきました。

スクリーンショット 2025-05-03 4.23.10.png

ログイン操作を進めると、以下のような見慣れた画面が表示され、ログインが成功しました!

スクリーンショット 2025-05-03 4.25.18.png

IDトークンの中身を見ると、Googleアカウントでログインできてそうです!

{
  "at_hash": "lLfqLkQXnm-mnybTuA6dbQ",
  "sub": "11111111-c011-7004-ef22-444444444444",
  "cognito:groups": [
    "ap-northeast-1_XXXXXXXXX_Google"
  ],
  "iss": "https://cognito-idp.ap-northeast-1.amazonaws.com/ap-northeast-1_NN5Ct2qua",
  "cognito:username": "google_1111111111111111111111",
  "nonce": "8HIZ7ypLB7ZyUHVKsQBGXSwL2kOGj5XxS3ai7lQ5pNNCPDpMjmz4XgHupmiUyHqxjtFVoMPwqCGwOYj9zV34jgvbWjwHCXqCSzp28eHy-fHXbD4MUks1SLb7Msp8r358waoQrOeQUzeaLFpaNnjPbqmSTm_vrnLmpkS8ycuoGOs",
  "origin_jti": "6d7be651-b393-4689-a92a-98ffe7dbc98b",
  "aud": "ar4sjg7u1g1t16cah2rjdddd",
  "identities": [
    {
      "dateCreated": "1745787680798",
      "userId": "1111111111111111111111",
      "providerName": "Google",
      "providerType": "Google",
      "issuer": null,
      "primary": "true"
    }
  ],
  "token_use": "id",
  "auth_time": 1746213920,
  "name": "Satoshi Moriyama",
  "exp": 1746217520,
  "iat": 1746213920,
  "jti": "08b75547-a27d-4828-b5e8-5943163b0bc1"
}

まとめ

簡単にID連携が実装できました!
あとGCを触ることが出来たのが個人的に良かったです!

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?