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.4k
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
製造業ドメインにおける LLMプロダクト構築: 複雑な文脈へのアプローチ
caddi_eng
1
550
OpenClawで回す組織運営
jacopen
3
680
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
5
1.1k
GitLab Duo Agent Platform + Local LLMサービングで幸せになりたい
jyoshise
0
270
Security Diaries of an Open Source IAM
ahus1
0
210
技術的負債の泥沼から組織を救う3つの転換点
nwiizo
8
3.5k
元エンジニアPdM、IDEが恋しすぎてCursorに全業務を集約したら、スライド作成まで爆速になった話
doiko123
1
570
EMからVPoEを経てCTOへ:マネジメントキャリアパスにおける葛藤と成長
kakehashi
PRO
9
1.5k
Dr. Werner Vogelsの14年のキーノートから紐解くエンジニアリング組織への処方箋@JAWS DAYS 2026
p0n
1
120
20260311 ビジネスSWG活動報告(デジタルアイデンティティ人材育成推進WG Ph2 活動報告会)
oidfj
0
230
タスク管理も1on1も、もう「管理」じゃない ― KiroとBedrock AgentCoreで変わった"判断の仕事"
yusukeshimizu
5
2.5k
クラウド × シリコンの Mashup - AWS チップ開発で広がる AI 基盤の選択肢
htokoyo
2
170
Featured
See All Featured
Music & Morning Musume
bryan
47
7.1k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
110
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
82
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.3k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
140
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
61
52k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
200
Bash Introduction
62gerente
615
210k
Are puppies a ranking factor?
jonoalderson
1
3.1k
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認証の実装をぜひ検討してみてください!