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
20231109_WebAuthnを使ったパスワードレス認証をRailsアプリケーション...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yuma Ito
November 09, 2023
Technology
5.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20231109_WebAuthnを使ったパスワードレス認証をRailsアプリケーションで実装する
After Kaigi on Rails Night LT登壇資料
メドピア株式会社 伊藤悠真
https://smartbank.connpass.com/event/299631/
Yuma Ito
November 09, 2023
Other Decks in Technology
See All in Technology
【Findyテック文化祭ワークショップ】新卒エンジニア&採用担当と作る、 なりたい姿と今やるべき一歩
dip_tech
PRO
0
150
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
350
メルカリにおけるAI時代の高速プロトタイピング基盤「Arca」
ryotarai
18
13k
AIに書かせて、プラットフォームで縛る ― EKSプラットフォームで実践した責任境界と権限設計
elmodev09
1
1.1k
雪かき部 #7 もう怖くない!SELECT文!
foursue
0
220
ScotSecure West 2026 - Glasgow
raybugg
0
210
AIに賢く動いてもらうためのコンテキスト〜Snowflake女子会 vol.8
snowwmn0824
0
200
Argo CDとAtlantisで実現するインフラ管理のセルフサービス化──小規模SREチームで支えるプラットフォーム
cassius7
0
250
3人で1000GPU超を統合運用する?マルチクラウド&オンプレを跨ぐ、構築と運用のリアル!
kazukun0716
2
770
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
450
React Nativeでの OTA Updateって、 どう説明する?
ichiki1023
0
120
営業オントロジーの作り方と、エージェントからの辿り方 ── ナレッジワークの現場から
kworkdev
PRO
1
200
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
5.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Music & Morning Musume
bryan
48
7.4k
Navigating Team Friction
lara
192
16k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Odyssey Design
rkendrick25
PRO
2
840
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
380
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
500
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
510
4 Signs Your Business is Dying
shpigford
187
23k
Between Models and Reality
mayunak
4
470
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認証の実装をぜひ検討してみてください!