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.5k
1
Share
コンシューマ向けサービスで使われている 認証認可仕様とデジタル署名 / saloff1-ritou
ritou
June 19, 2019
More Decks by ritou
See All by ritou
[PR] はじめてのデジタルアイデンティティという本を書きました
ritou
2
1.2k
“パスワードレス認証への道" ユーザー認証の変遷とパスキーの関係
ritou
2
6.7k
パスキー導入の課題と ベストプラクティス、今後の展望
ritou
12
7.8k
Password-less Journey - パスキーへの移行を見据えたユーザーの準備 + α
ritou
1
170
Password-less Journey - パスキーへの移行を見据えたユーザーの準備 @ AXIES 2024
ritou
4
1.8k
OIDF-J EIWG 振り返り
ritou
2
110
そのQRコード、安全ですか? / Cross Device Flow
ritou
4
670
MIXI Mと社内外のサービスを支える認証基盤を作るためにやってきたこと #MTDC2024
ritou
3
810
Passkeys and Identity Federation @ OpenID Summit Tokyo 2024
ritou
2
1k
Other Decks in Technology
See All in Technology
Expiration of Secure Boot Certificates for vSphere Virtual Machines
mirie_sd
0
100
ServiceNow Knowledge 26 の歩き方
manarobot
0
120
MLOps導入のための組織作りの第一歩
akasan
0
340
ARIA Notifyについて
ryokatsuse
1
120
Do Ruby::Box dream of Modular Monolith?
joker1007
1
350
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.4k
社内エンジニア勉強会の醍醐味と苦しみ/tamadev
nishiuma
0
220
No Types Needed, Just Callable Method Check
dak2
1
1.4k
Microsoft 365 / Microsoft 365 Copilot : 自分の状態を確認する「ラベル」について
taichinakamura
0
300
Claude Code を安全に使おう勉強会 / Claude Code Security Basics
masahirokawahara
11
35k
Hacobu Tech Deck
hacobu
PRO
0
120
扱える不確実性を増やしていく - スタートアップEMが考える「任せ方」
kadoppe
0
310
Featured
See All Featured
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.6k
Chasing Engaging Ingredients in Design
codingconduct
0
170
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.3k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
99
Docker and Python
trallard
47
3.8k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Fireside Chat
paigeccino
42
3.9k
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 ͷਅਖ਼ੑͷݕূ •
ূ໌ॻνΣʔϯͷݕূ