Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Amplify製アプリケーションにパスキー認証を導入する
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Toru Takahashi
December 19, 2024
260
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Amplify製アプリケーションにパスキー認証を導入する
Amplify Boost Up #07
https://aws-amplify-jp.connpass.com/event/334686/
Toru Takahashi
December 19, 2024
More Decks by Toru Takahashi
See All by Toru Takahashi
テストコードのないプロジェクトにテストを根付かせる
tttol
1
350
ここが辛いよLambda
tttol
0
53
AWS Community Builder選出までの軌跡
tttol
1
120
自分の技術力を言語化しよう
tttol
3
130
アプリケーションエンジニアだからこそわかるCDKコントリビューションの難しさと面白さ.pdf
tttol
3
280
AWS_AmplifyとNFCカードを使ってデジタル名刺を作る.pdf
tttol
4
210
AWS AmplifyとNFCカードを使ってデジタル名刺を作る
tttol
0
180
はじめてのAWS CDKコントリビュート
tttol
0
380
Virtual Threadsで実現する性能改善
tttol
1
2.4k
Featured
See All Featured
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
300
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
410
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
530
Un-Boring Meetings
codingconduct
0
420
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
We Have a Design System, Now What?
morganepeng
55
8.3k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
480
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
ご清聴ありがとうございました