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
20231109_WebAuthnを使ったパスワードレス認証をRailsアプリケーション...
Search
Yuma Ito
November 09, 2023
Technology
0
5.1k
20231109_WebAuthnを使ったパスワードレス認証をRailsアプリケーションで実装する
After Kaigi on Rails Night LT登壇資料
メドピア株式会社 伊藤悠真
https://smartbank.connpass.com/event/299631/
Yuma Ito
November 09, 2023
Tweet
Share
Other Decks in Technology
See All in Technology
AIのグローバルトレンド 2025 / ai global trend 2025
kyonmm
PRO
1
140
専門分化が進む分業下でもユーザーが本当に欲しかったものを追求するプロダクトマネジメント/Focus on real user needs despite deep specialization and division of labor
moriyuya
1
1.3k
Bet "Bet AI" - Accelerating Our AI Journey #BetAIDay
layerx
PRO
4
1.7k
「AIと一緒にやる」が当たり前になるまでの奮闘記
kakehashi
PRO
3
140
20250807_Kiroと私の反省会
riz3f7
0
210
形式手法特論:位相空間としての並行プログラミング #kernelvm / Kernel VM Study Tokyo 18th
ytaka23
3
1.3k
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
6.3k
「Roblox」の開発環境とその効率化 ~DAU9700万人超の巨大プラットフォームの開発 事始め~
keitatanji
0
120
OPENLOGI Company Profile for engineer
hr01
1
38k
生成AI導入の効果を最大化する データ活用戦略
ham0215
0
140
Amazon S3 Vectorsは大規模ベクトル検索を低コスト化するサーバーレスなベクトルデータベースだ #jawsugsaga / S3 Vectors As A Serverless Vector Database
quiver
1
210
Google Agentspaceを実際に導入した効果と今後の展望
mixi_engineers
PRO
3
410
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
How STYLIGHT went responsive
nonsquared
100
5.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
183
54k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
750
Done Done
chrislema
185
16k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
800
The World Runs on Bad Software
bkeepers
PRO
70
11k
Automating Front-end Workflow
addyosmani
1370
200k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Transcript
WebAuthnを使ったパスワードレス 認証をRailsアプリケーションで実装 する 2023/11/09 @After Kaigi on Rails Night メドピア株式会社
伊藤悠真
Kaigi on Rails お疲れ様でした!
気になったセッション
自己紹介 • 伊藤悠真 (@yuma_ito_bd) • フィッツプラス(メドピアの子会社)の サーバーサイドエンジニア ◦ 特定保健指導の効率化支援ツール Tonoelの開
発 • Ruby/Rails歴2年弱 • 趣味:バスケ、コーヒー
パスワードを忘れたことがある人 ✋
パスワードが不要な認証方式が あります!
体験してみよう! https://webauthn.io
3つのキーワード • FIDO • WebAuthn • パスキー
FIDO (Fast Identity Online) とは? • パスワードレスで認証するための技術 • 指紋や虹彩などの生体情報やPIN、専用の セキュリティーキーを用いる
• 公開鍵暗号方式を利用し、サーバーにはパ スワードではなく公開鍵を保存する
FIDO認証のメリット • UXの向上 ◦ パスワードを覚える必要がない • セキュリティーの向上 ◦ 秘匿情報を通信しない(秘密鍵は認証器に安全に保 存)
◦ Webサービスごとに異なる公開鍵を登録できる
3つのキーワード • FIDO • WebAuthn • パスキー
WebAuthn =WebブラウザでFIDO認証を 実現する仕様(API)
認証器 ブラウザ WebAuthnの仕組み(登録) サーバ ①チャレンジ要求 ②チャレンジ生成 ③本人認証を要求 ④本人認証 ⑤公開鍵/秘密鍵を 生成、端末に秘密鍵
を保存 ⑥公開鍵など署名情報を送信 ⑦署名情報を検証 ⑧公開鍵を保存
認証器 ブラウザ WebAuthnの仕組み(認証) サーバ ①チャレンジ要求 ②チャレンジ生成 ③本人認証を要求 ④本人認証 ⑤端末に保存された 秘密鍵で署名
⑥署名情報を送信 ⑦DBに保存された公開 鍵で署名情報を検証
3つのキーワード • FIDO • WebAuthn • パスキー
秘密鍵をクラウドで同期する仕組み 例:認証器(iPhone)が変わっても同じAppleアカウン トにログインしていればWebサービスにログインでき る (狭義の)パスキー
(広義の)パスキー WebAuthnによるパスワードを使わない認証 パスキー対応サービス: Google, Apple, Microsoft, Amazon, GitHub, 1Password, Yahoo!
JAPAN, ドコモ, メルカリなど続々対応!
RailsでWebAuthnの認証機能を 実装してみたい!
けど署名の検証とか仕様が難し そう・・・ (実際、難しかったです)
アプリの公開が間に合いませんでした
WebAuthn用のGem • webauthn-ruby ◦ WebAuthnの認証サーバで必要な処理を担ってくれるGem • warden-webauthn ◦ RackベースのミドルウェアWardenでWebAuthn認証を行う Gem
• devise-passkeys ◦ devise(有名な認証用Gem)でWebAuthn認証を行うGem
WebAuthn用のnpmパッケージ • フロントエンドで必要な処理(認証器へのリクエスト、 パラメータのbase64変換)を担う • @github/webauthn-json (star: 680) • @simplewebauthn
(star: 981) ◦ サーバサイド(Node.js)の処理やTypeScriptの型情報が用意されている • @passwordless-id/webauthn (star: 213)
Model • User ◦ deviseの認証で使うモデル ◦ webauthn_id (ユーザID) • Passkey
◦ 公開鍵を管理するモデル ◦ label ◦ public_key ◦ external_id ◦ sign_count
Model
routes チャレンジ要求用エンドポイント
Controller (登録) 認証サーバー情報 チャレンジの生成 署名の検証、公開鍵の保存
JavaScript チャレンジ生成用URL ブラウザがサポート しているか確認 navigator.credentials. create()を内部で実行
まとめ • FIDO認証、WebAuthenの仕組み、パスキーについ て • FIDO認証できる簡単なRailsアプリケーションのを実 装方法について • FIDO認証の実装をぜひ検討してみてください!