AWS Cognitoでパスキーが使えるようになったので早速使ってみた

https://qiita.com/shimagaji/items/0dec65298326ac285e3a#cognito%E3%81%8C%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%83%AC%E3%82%B9%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%92%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88

こちらの記事で、AWS Cognitoがパスキーによる認証に対応したと言うことを知り、早速試してみました。速報ベースで、ドキュメントも読んでいないので、間違っているところがあったらごめんなさい。

## ユーザプールの作成


まずはAWSにログインし、Cognitoから新しいアプリを作成します。

![Cognitoのトップ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/3a0562a0-5845-007d-221a-7eb28a97e505.png)

とりあえずTraditional web applicationを作ります。
アプリ名も適当につけました。
![新たなアプリの設定画面 アプリ名](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/9a5c4354-9c12-0abc-0bbd-a0a76816c7b5.png)

ユーザ識別子はEメールにします。
今回はCognitoだけで完結しますので、Return URLも空欄のままにしておきます。

![新たなアプリの設定画面 ユーザ識別子など](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/928f4087-6efa-89b2-872a-2138b5f97ae3.png)

ユーザプールが完成しました！

![スクリーンショット 2024-11-26 21.33.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/1f675d7b-9977-a23e-3f31-72a85fd6370c.png)

せっかくなのでユーザプール名も分かりやすいものに変更しておきます。

![スクリーンショット 2024-11-26 21.35.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/73fbb6b7-6e50-256c-d615-5eafa9884963.png)

ここからサインイン方法を選べるようです。

![スクリーンショット 2024-11-26 21.37.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/ad73bf2d-d94b-2184-248a-872fba692344.png)

パスキーは、パスワードに追加のオプションとして設定できるようです。
パスワードを廃止し、パスキーだけのログインにはできないようです。

![スクリーンショット 2024-11-26 21.38.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/d4c26e34-49c4-e94e-22da-89087a13a3c5.png)

## 実際に使ってみる。
### 新規登録

元の画面から「Set up your app」の横のアプリ名をクリックして、

![スクリーンショット 2024-11-26 21.36.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/609a824c-22fc-a39c-4ecb-e49733728184.png)

右上の「View login page」をクリックしてログインページを開きます。

![スクリーンショット 2024-11-26 21.40.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/13c8dbf9-63c4-1bc5-c3d4-658e7dbc2348.png)

とてもシンプルで可愛いログイン画面が表示されます。初めての利用なので、Create an accountをクリックし、新規登録画面に進みます。

![ログイン画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/bdb1adad-f2e9-cf59-c5ae-a9a20e68543d.png)

ユーザプール作成時に見たとおり、新規登録時はパスワードが必須のようです。
デフォルトだと記号も必須になっており、Googleパスワードマネージャのサジェストしてきたパスワードだと先に進めませんでした。

![新規登録画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/3e65b1f2-7063-6d2b-dfdb-4c89be14e3ee.png)

Eメールで確認コードが飛んでくるので、それを入力します。

![確認コードの入力](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/34a5a944-0824-1ae6-1139-b90a8f5b3023.png)

アカウント作成完了とともに、パスキー登録画面に遷移します。

![アカウント作成完了](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/0b0e2d05-7cab-b102-fd2c-a9629f1f3aa6.png)

パスキーを作成します。

![パスキー作成中](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/f180f5dc-e435-7dbf-510c-3bd2c7ff7749.png)

ログインが完了しました。Return URLを設定していないので、ここで終わりです。

![ログイン完了画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/646c10cb-392c-e7f0-7387-c9fe70643cf5.png)

### ログイン

ログインするには、再度コンソールからログイン画面を開きます。
ログイン済のセッションが残っているので、Sign in with different userをクリックします。

![スクリーンショット 2024-11-26 21.44.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/6298b747-6505-9577-5bcf-594581e882b4.png)

もう一度Eメールを入力して
（オートフィルによるパスキーログインにも対応していなさそう・・・）

![スクリーンショット 2024-11-26 21.44.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/e197bba8-cc1b-5fe7-3537-bbfafad7492c.png)

パスキーでのログインを行います。

![スクリーンショット 2024-11-26 21.44.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/03314ea2-5860-0e84-1215-a8c119a5667a.png)


![スクリーンショット 2024-11-26 21.44.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/bebe9b97-2c79-52bd-8b82-ffc0aad1dcf1.png)

ログインが完了しました。

![スクリーンショット 2024-11-26 21.44.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/8c173aaf-c11c-90f7-1fac-676a8f76642b.png)


## 多要素認証はどうなる？

さて、パスキーを設定したとして、パスワードが残っているのであれば、多要素認証を設定してパスワードによるログインの安全性を改善したいところですが・・

![スクリーンショット 2024-11-26 21.46.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/ba63de12-4db3-0d18-9869-5a453d70a161.png)

なんと、多要素認証は、パスワードのみが認証手段の場合でしか使えないとのエラーになってしまいました。

![スクリーンショット 2024-11-26 21.47.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/ebea6045-6ef0-30eb-787e-fb40de21494b.png)

## 作られたユーザの確認

コンソールでユーザを確認しましたが、パスキーを削除したり、パスキーの有無を確認できる画面も見つかりませんでした。
![スクリーンショット 2024-11-26 22.24.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135431/c9675f20-11d7-0add-41be-b42708c1fec7.png)


新規作成時にパスキーを作成していないユーザが、パスワードでログインした際、ログイン後にパスキーの登録を誘導されることもありませんでした。


## まとめ

とりあえずドキュメントも読まずにCognitoでパスキーを使ってみました。
最低限の設定は即使えるようになったので、とりあえず簡易的なサービスの認証としては非常に便利だと思います。

ですが、オートフィルによるパスキーログインをしたいだったり、パスワードを廃止したいだったり、パスワードの場合には二要素認証をいれたいといった、ちょっとした設定はできないようでした。今後の改善に期待です。