Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Amplify製アプリケーションにパスキー認証を導入する
Search
Toru Takahashi
December 19, 2024
1
79
Amplify製アプリケーションにパスキー認証を導入する
Amplify Boost Up #07
https://aws-amplify-jp.connpass.com/event/334686/
Toru Takahashi
December 19, 2024
Tweet
Share
More Decks by Toru Takahashi
See All by Toru Takahashi
Virtual Threadsで実現する性能改善
tttol
1
1.3k
私がAWS Amplifyを使う理由
tttol
1
320
AWS Community Builder流:技術情報のインプット・アウトプット戦略
tttol
1
490
Amplifyで開発・運用している 個人開発アプリ紹介
tttol
0
520
AmplifyにCDKがやってきた_プレビュー版のAmplify_Gen2を触ってみた.pdf
tttol
1
730
個人開発はAmplifyでホスティングしよう
tttol
0
760
結婚式WEB招待状をAWSリソースでサクッと自作した話
tttol
1
980
ChatGPTとCIパイプラインを利用してドキュメント作成作業を自動化した話
tttol
0
1.8k
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
350
Building Applications with DynamoDB
mza
93
6.2k
Code Review Best Practice
trishagee
65
17k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Practical Orchestrator
shlominoach
186
10k
Docker and Python
trallard
43
3.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
113
50k
Building Your Own Lightsaber
phodgson
104
6.2k
We Have a Design System, Now What?
morganepeng
51
7.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
The Cult of Friendly URLs
andyhume
78
6.1k
Transcript
Amplify製アプリケーションに パスキー認証を導入する 髙橋 透 2024/12/19 Amplify Boost Up #07
Name: 髙橋 透 Community: AWS Community Builders (Front-end Web and Mobile)
Tech interest: • Java(本業) • AWS Amplify(趣味) Like: お酒を飲む、0歳の息子氏を愛でる
Q:なぜAmplifyにパスキー認証を?
A:個人で作ってるアプリの認証フローを 楽にしたかったからです
https://accounts.hatena.ne.jp/login パスキー認証とは • 生体認証を用いた認証処理 ◦ 指紋、顔など • パスワード入力が不要 • 端末ごとに生体認証キーを
管理可能
個人で作ってるアプリ???
私は家族専用の家計管理アプリを自作 してAmplifyで運用してます。 ID&パスワードで認証しているところを パスキーにしたかったのです。 ※このアプリについては過去のAmplify Boost Up#05で話したことがあります。
本日お話しすること • Amplifyへのパスキー認証導入 • 実装の勘所
本日お話しすること • Amplifyへのパスキー認証導入 • 実装の勘所
Amplifyにパスキー認証機能を導入する方法は 公式リファレンスには明記されていません
amazon-cognito-passwordless-authという ライブラリを利用して実装していきます
https://github.com/aws-samples/amazon-cognito-passwordless-auth/tree/main
パスキー認証に必要なAWSリソースを CDKで記述しnpmライブラリとして公開しています ※神のようなサンプル
本日お話しすること • Amplifyへのパスキー認証導入 • 実装の勘所
「Amplify×パスキー認証」の実装は 想像以上に大変でした 全容をこの場で喋り切ることは難しいので 主要な部分を抜粋して紹介します
まずはアーキテクチャ図を・・・
初回認証用の キーを発行 認証履歴を保持
実装の勘所を2つ紹介します 1. backend.tsの修正 2. Amazon Cognitoのカスタム認証フロー
勘所1:backend.tsの修正
backend.tsとは • Amplifyプロジェクトの雛形作成時に自動生成され る設定ファイル • Cognito, DynamoDB, S3等のAWSリソースの作 成に必要
これ
今回backend.tsを編集することで カスタムCDKリソースを作成していきます
初回認証用の キーを発行 認証履歴を保持 カスタムCDKでこのLambda群を作成 ※aws-samplesのライブラリも利用
backend.tsって がっつり編集する機会が少ないですよね
backend.tsに実装を追記するとどうなるか? ↓ カスタムのAWSリソースを CDK経由で作成できる
例えば下記のように書くとSNSとSQSを作成できる 参考:https://docs.amplify.aws/react/build-a-backend/add-aws-services/custom-resources/
今回パスキー認証のために結構手を加えました
勘所2:Amazon Cognitoのカスタム認証フロー
Cognitoのデフォルト認証フローは ID&パスワード認証です この認証フローをパスキー認証に変更したい
Cognitoのデフォルト認証フローは ID&パスワード認証です この認証フローをパスキー認証に変更したい →Cognitoの「カスタム認証フロー」を使おう!
カスタム認証フローとは • 仕様に沿ったLambda関数を用意することで Cognitoの認証フローを変更できる • パスキー認証・二要素認証などに変更可能
参考:https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-challenge.html
初回認証用の キーを発行 認証履歴を保持 ここのLambda3つと対応している
①クライアントからの認証リクエストを受けて 認証フローの定義を行う ②認証に利用するchallengeというランダム 文字列を生成してクライアントに返す ③クライアントが送信した署名付き challengeを検証し認証可否を判断する
以上が実装の勘所でした
まとめ
まとめ • Amplifyにパスキー認証を導入するのは大変(でもいい 勉強になる) • backend.tsを拡張すると好きなAWSリソースをCDKで 作成できる • Cognitoのカスタム認証フローを使うとID&パスワード認 証以外のフローを適用することができる
もっと詳しく知りたくなった方へ https://qiita.com/tttol777/items/ac4f6562eee4fbe49655
ご清聴ありがとうございました