AWS Cognitoの新しいUIの変更とSpring Bootへの認証機能追加

はじめに

自作のWebアプリに認証機能をつけようと、Cognitoを開いたらガラッとUIが変わってびっくりしました。

どうも以下の更新に伴う変更のようです。

aws.amazon.com

この更新に伴いCognitoで用意されるログイン画面もモダンなものになっています。

ちなみにAWS Management Console自身も見た目がちょっと変化しています。

aws.amazon.com

この記事では、新しいCognitoを使ってSpring Bootに認証機能をつけてみます。

実装

従来のCognitoは色々と設定項目があって何を設定すれば良いかかなりの知識が求められる感じだったのですが、新しいUIでは最初にアプリケーションタイプを選びます。また、他に選ぶ項目も少なく、導入のハードルが少なくなっています。

ユーザープールを作成した後は、言語ごとにサンプルプログラムが表示されます。

このサンプルプログラムに従っても良いのですが、私は以下のブログの記事の内容を参考にあらかじめ作っていました。

www.baeldung.com

上記のブログに記載の内容から、以下の点を修正しました。

  • spring-security-oauth2-joseは使用しない
  • user-name-attributeの値はusernameにする

後はclientIdclientSecretissuerUriをCognitoの概要画面に表示されているものに置き換えると動きました。

以前のCognitoでは色々と設定項目がありました。例えばMFAの設定などです。概要ページのレコメンデーションに色々と詳細設定が後から実施可能なようです。

考察

ここまでの内容はとりあえず動いたというレベルです。今のところnameだけを取得していますが、他にも色々な属性の取得が必要となるケースが大半かと思います。そのためにはOpenID Connect(OIDC)スコープの理解が必要となります。

docs.aws.amazon.com

より発展的な機能としては、今回のCognitoの更新でサポートされたパスワードレスログインやパスキー対応にも注目したいです。

また、いずれはマルチテナントなアプリに対してCognitoを活用することを考えています。マルチテナントなアプリケーションについてはAWSでは以下のベストプラクティスを公開しています。

docs.aws.amazon.com