はじめに
自作のWebアプリに認証機能をつけようと、Cognitoを開いたらガラッとUIが変わってびっくりしました。
どうも以下の更新に伴う変更のようです。
この更新に伴いCognitoで用意されるログイン画面もモダンなものになっています。
ちなみにAWS Management Console自身も見た目がちょっと変化しています。
この記事では、新しいCognitoを使ってSpring Bootに認証機能をつけてみます。
実装
従来のCognitoは色々と設定項目があって何を設定すれば良いかかなりの知識が求められる感じだったのですが、新しいUIでは最初にアプリケーションタイプを選びます。また、他に選ぶ項目も少なく、導入のハードルが少なくなっています。
ユーザープールを作成した後は、言語ごとにサンプルプログラムが表示されます。
このサンプルプログラムに従っても良いのですが、私は以下のブログの記事の内容を参考にあらかじめ作っていました。
上記のブログに記載の内容から、以下の点を修正しました。
spring-security-oauth2-jose
は使用しないuser-name-attribute
の値はusername
にする
後はclientId
やclientSecret
、issuerUri
をCognitoの概要画面に表示されているものに置き換えると動きました。
以前のCognitoでは色々と設定項目がありました。例えばMFAの設定などです。概要ページのレコメンデーションに色々と詳細設定が後から実施可能なようです。
考察
ここまでの内容はとりあえず動いたというレベルです。今のところname
だけを取得していますが、他にも色々な属性の取得が必要となるケースが大半かと思います。そのためにはOpenID Connect(OIDC)スコープの理解が必要となります。
より発展的な機能としては、今回のCognitoの更新でサポートされたパスワードレスログインやパスキー対応にも注目したいです。
また、いずれはマルチテナントなアプリに対してCognitoを活用することを考えています。マルチテナントなアプリケーションについてはAWSでは以下のベストプラクティスを公開しています。