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
コンシューマ向けサービスで使われている 認証認可仕様とデジタル署名 / saloff1-ritou
Search
ritou
June 19, 2019
Technology
1
1.4k
コンシューマ向けサービスで使われている 認証認可仕様とデジタル署名 / saloff1-ritou
ritou
June 19, 2019
Tweet
Share
More Decks by ritou
See All by ritou
“パスワードレス認証への道" ユーザー認証の変遷とパスキーの関係
ritou
2
1.9k
パスキー導入の課題と ベストプラクティス、今後の展望
ritou
12
4.1k
Password-less Journey - パスキーへの移行を見据えたユーザーの準備 + α
ritou
1
93
Password-less Journey - パスキーへの移行を見据えたユーザーの準備 @ AXIES 2024
ritou
4
1.7k
OIDF-J EIWG 振り返り
ritou
2
52
そのQRコード、安全ですか? / Cross Device Flow
ritou
4
530
MIXI Mと社内外のサービスを支える認証基盤を作るためにやってきたこと #MTDC2024
ritou
3
620
Passkeys and Identity Federation @ OpenID Summit Tokyo 2024
ritou
2
820
Webアプリ開発者向け パスキー対応の始め方
ritou
4
6.5k
Other Decks in Technology
See All in Technology
データプラットフォーム技術におけるメダリオンアーキテクチャという考え方/DataPlatformWithMedallionArchitecture
smdmts
3
250
RubyOnRailsOnDevin+α / DevinMeetupJapan#2
ginkouno
0
820
~宇宙最速~2025年AWS Summit レポート
satodesu
0
150
成立するElixirの再束縛(再代入)可という選択
kubell_hr
0
480
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
51
30k
自分を理解するAI時代の準備 〜マイプロフィールMCPの実装〜
edo_m18
0
110
LinkX_GitHubを基点にした_AI時代のプロジェクトマネジメント.pdf
iotcomjpadmin
0
130
DroidKnights 2025 - Jetpack XR 살펴보기: XR 개발은 어떻게 이루어지는가?
heesung6701
1
150
原則から考える保守しやすいComposable関数設計
moriatsushi
3
480
Model Mondays S2E01: Advanced Reasoning
nitya
0
420
Workflows から Agents へ ~ 生成 AI アプリの成長過程とアプローチ~
belongadmin
3
170
Model Mondays S2E02: Model Context Protocol
nitya
0
140
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
Site-Speed That Sticks
csswizardry
10
640
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
BBQ
matthewcrist
89
9.7k
The Invisible Side of Design
smashingmag
299
51k
Become a Pro
speakerdeck
PRO
28
5.4k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
16
930
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Docker and Python
trallard
44
3.4k
Six Lessons from altMBA
skipperchong
28
3.8k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Transcript
ίϯγϡʔϚ͚αʔϏεͰΘΕ͍ͯΔ ೝূೝՄ༷ͱσδλϧॺ໊ ͍ͱ͏Γΐ͏!SJUPV αϧΦϑॺ໊ϒλೝূઌഐͷເΛݟͳ͍
͍ͱ͏Γΐ͏ • (ג)ϛΫγΟ ΤϯδχΞ - Identity / Platform • OpenID
ϑΝϯσʔγϣϯɾδϟύϯ ΤόϯδΣϦετ(2߸ػ) • Blog : ritou.hatenablog.com • Twitter : @ritou (ळాͷೣ) • ˌidcon, #iddance !2
ຊͷ༰ • ೝূपΓͰΘΕ͍ͯΔ/͜Ε͔ΒΘΕͦ͏ͳ༷ Λհ • σδλϧॺ໊ͷΘΕͲ͜Ζʢ͞ΘΓ͚ͩʣ !3
ೝূೝՄपΓͷΩʔϫʔυ • OAuth 2.0 & OpenID Connect • WebAuthn /
FIDO !4
OAuth 2.0 & OpenID Connect
OAuth 2.0 RFC 6749/6750 (2012/10~) • RFC 6749 : τʔΫϯϕʔεͷϦιʔεΞΫηεͷ͘͠Έ
• ొਓClient, Server, Resource Owner ͷ3ऀ • Client͕Resource OwnerͷύεϫʔυͳͲΛѻΘͳ͍(※) • RFC 6750 : Bearer TokenͰAPIΞΫηε͢Δํ๏ • ΞΫηετʔΫϯͷऔಘํ๏ • ΞΫηετʔΫϯΛ༻͍ͨAPIΞΫηεํ๏ !6
OAuth 2.0ར༻ྫ ͯͳϒϩάͷInstagram࿈ܞ !7
OAuth 2.0ར༻ྫ ͯͳϒϩάͷInstagram࿈ܞ !8
Կ͕ߦΘΕͨͷ͔ʁ !9 3FTPVSDF0XOFS $MJFOU 4FSWFS *OTUBHSBN࿈ܞΛ ༗ޮԽ͢Δ *OTUBHSBNͷը૾ ͷΞΫηεݖݶΛཁٻ
ΞΫηε͕ڐՄ͞Εͨ͜ͱΛ௨ ̏ ͯͳϒϩάʹΑΔ *OTUBHSBNͷը૾ͷΞΫηεΛ Ϣʔβʔ͕ڐՄ
!10 IUUQTUXJUUFSDPNLVSB@MBCTUBUVT "VUIPSJ[BUJPO$PEF 'MPX *NQMJDJU'MPX
None
OAuth 2.0ͷτʔΫϯͱ༻్ !12 • Access Token - APIΞΫηε • Refresh
Token - Access Tokenߋ৽ • Authorization Code - Access Token / Refresh Tokenऔಘ
͍ΘΏΔOAuthೝূ (OAuth as a Authentication) !13 • OAuth 2.0ͰϓϩϑΟʔϧAPI͔ΒϢʔβʔࣝผࢠ Λऔಘ͠ɺೝূػೳʹར༻
• ౷Ұ͞Ε͍ͯͳ͍ϓϩϑΟʔϧAPI • Native ApplicationͱόοΫΤϯυαʔόʔؒͷΞΫηετʔ ΫϯͷϋϯυϦϯά
OpenID Connect (2014/2~) !14 • ʮʙͰϩάΠϯʯ(ID࿈ܞ)ͷͨΊͷ༷ • OAuth 2.0Λ֦ு •
ID Token - ೝূΠϕϯτͷใΛΓऔΓ • Userinfo Endpoint - ඪ४తͳϓϩϑΟʔϧAPI • Self-Issued OP - ্Ͱಈ࡞͢ΔOpenID Provider
!15
OpenID Connect - ID Token !16 • ೝূΠϕϯτͷใΛ֨ೲ • JSON
Web Signatureܗࣜ • ϢʔβʔɺRPɺೝূཁٻͷใΛ֨ೲ • OP͕࣋ͭൿີ伴Ͱॺ໊ • RPެ։伴ͰݕূՄೳ
OAuth 2.0/OIDCੜޙͷมԽ !17 • Ϣʔεέʔε • Client : Web App
-> Native App(Hybrid) -> Single Page App etc… • Server : monolith -> microservices • ྖҬ • SNS࿈ܞɺιʔγϟϧϩάΠϯ -> ܾࡁɺۚ༥ɺϔϧεέΞ جຊػೳ͚ͩͰཁ͕݅ຬͨͤͳ͍߹
!18
Security Considerations • RFCs • 6819 : OAuth 2.0 Threat
Model and Security Considerations • 8252 : OAuth 2.0 for Native Apps • Draft • OAuth 2.0 Security Best Current Practice • OAuth 2.0 for Browser-Based Apps !19
Financial-grade API (FAPI) • ΦϯϥΠϯͷۚ༥αʔϏεʹ͓͚ΔOAuth 2.0/OIDC ͷ࣮ΨΠυϥΠϯ • Part 1:
Read-Only API Security Profile - ࢀরܥ • Part 2: Read and Write API Security Profile - ߋ৽ܥ • Client Initiated Backchannel Authentication Profile (CIBA) - ClientڥͱೝূσόΠεͷ !20
OAuth/OIDCͱσδλϧॺ໊ • ίΞͳ༷ • ID Tokenͷੜɺݕূ • ͦͷଞɺ֤छϦΫΤετ/ϨεϙϯεͷอޢʹJWSͳͲΛ ར༻͢Δ֦ு͕͋Δ •
Clientೝূ • ೝূ(ೝՄཁٻ) !21
WebAuthn / FIDO Ϣʔβʔೝূͷ͓
ύεϫʔυೝূ !23 • ཁ͕݅ຬͨ͞ΕΔͳΒࢸߴͷೝূํࣜ • هԱετϨʔδͷར༻ʹΑΔՄൖੑ • αʔϏε͝ͱʹҟͳΔɺਪଌࠔͳจࣈྻ • ϑΟογϯάରࡦ
• ࿙Ӯηʔϑͳཧ • ݱঢ় : ཁ݅Λຬͨͤͳ͍Ϣʔβʔ/αʔϏε……
FIDO !24 • ϩʔΧϧೝূΛར༻ • ύεϫʔυΛૹΒͳ͍ • (ੜମೝূʹݶΒͣ)༷ʑͳೝূํࣜͱͷΈ߹Θ͕ͤՄೳ • ެ։伴҉߸ํࣜ
• ొ : ॺ໊ͱެ։伴ใΛૹ৴ • ೝূ : ॺ໊Λૹ৴
WebAuthn !25 • FIDO2 : WebΞϓϦέʔγϣϯ͔ΒFIDO • WebAuthn (Web Authentication
API) • FIDOΛར༻͢ΔαʔϏε͕ݺͼग़͢JavaScript API • CTAP • ηΩϡϦςΟΩʔͱΓͱΓ͢ΔͨΊͷ༷ɺϒϥβ͕࣮
WebAuthn - ొਓ !26 • Relying Party : WebΞϓϦ •
Authenticator : ηΩϡϦςΟΩʔɺσόΠε • Client : Webϒϥβ
WebAuthn - ొϑϩʔ !27 1. ొ༻ύϥϝʔλ࡞ (RPใ,Ϣʔβʔใ, ϩʔΧϧೝূͷ༗ແͳͲ) 3. Authenticator/Platform
ͷػೳΛݺͼग़͢ 2. JS APIͷݺͼग़͠ 4.ϩʔΧϧೝূ 伴ϖΞੜ ॺ໊࡞ 5. ৽͍͠ެ։伴ͱॺ໊ 6. JS API͔ΒͷΓ 7.֤छݕূ ެ։伴ͷอଘ Authenticator (SecurityKey etc…) Client (ϒϥβ) Relying Party
WebAuthn - ೝূϑϩʔ !28 1. ೝূ༻ύϥϝʔλ࡞ (ެ։伴ใ,ϩʔΧϧೝ ূͷ༗ແͳͲ) 3. Authenticator/Platform
ͷػೳΛݺͼग़͢ 2. JS APIͷݺͼग़͠ 4.ϩʔΧϧೝূ ॺ໊࡞ 5. ॺ໊ 6. JS API͔ΒͷΓ 7.֤छݕূ ೝূྃॲཧ Authenticator (SecurityKey etc…) Client (ϒϥβ) Relying Party
FIDOͷϢʔεέʔε !29 • ύεϫʔυϨεͳೝূํࣜͱͯ͠ (ॴ࣋+ϩʔΧϧೝূ) • 2ஈ֊/2ཁૉͷೝূํࣜͱͯ͠ (ॴ࣋) • ॏཁͳॲཧͷલͷຊਓ֬ೝͱͯ͠
̎ஈ֊(ཁૉ)ೝূͱϑΟογϯά !30 ϑΟογϯάϝʔϧɺ ϝοηʔδ ϑΟογϯάαΠτ ʢFYBNQMFJOGPʣ ਖ਼نͷαΠτ FYBNQMFDPN *%ύεϫʔυ
ϫϯλΠϜ ύεϫʔυ औಘͨ͠ *%ύεϫʔυ ϫϯλΠϜ ύεϫʔυ !30
FIDOͷϑΟογϯάੑ !31 ϑΟογϯάϝʔϧɺ ϝοηʔδ ϑΟογϯάαΠτ ʢFYBNQMFJOGPʣ ਖ਼نͷαΠτ FYBNQMFDPN *%ύεϫʔυ
Ξαʔγϣϯ ॺ໊ͳͲ औಘͨ͠ *%ύεϫʔυ Ξαʔγϣϯ !31 PSJHJO୯ҐͰ伴ϖΞΛ ੜ͍ͯ͠ΔͷͰ ϑΟογϯάαΠτʹ ϩάΠϯͰ͖ͳ͍ ϑΟογϯάαΠτ͚ͷ ΞαʔγϣϯΛਖ਼نͷαΠτʹ ૹͬͯݕূࣦഊ͢Δ
WebAuthn/FIDOͱσδλϧॺ໊ !32 • ొ/ೝূϑϩʔͷνϟϨϯδ/Ϩεϙϯεͷݕূ • ެ։伴ใΛ༻͍ͯॺ໊ݕূ • Authenticator ͷਅਖ਼ੑͷݕূ •
ূ໌ॻνΣʔϯͷݕূ