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
3.2k
パスキー導入の課題と ベストプラクティス、今後の展望
ritou
12
5.3k
Password-less Journey - パスキーへの移行を見据えたユーザーの準備 + α
ritou
1
110
Password-less Journey - パスキーへの移行を見据えたユーザーの準備 @ AXIES 2024
ritou
4
1.7k
OIDF-J EIWG 振り返り
ritou
2
64
そのQRコード、安全ですか? / Cross Device Flow
ritou
4
580
MIXI Mと社内外のサービスを支える認証基盤を作るためにやってきたこと #MTDC2024
ritou
3
670
Passkeys and Identity Federation @ OpenID Summit Tokyo 2024
ritou
2
840
Webアプリ開発者向け パスキー対応の始め方
ritou
4
6.6k
Other Decks in Technology
See All in Technology
Obsidian応用活用術
onikun94
2
490
データアナリストからアナリティクスエンジニアになった話
hiyokko_data
2
450
DDD集約とサービスコンテキスト境界との関係性
pandayumi
3
280
大「個人開発サービス」時代に僕たちはどう生きるか
sotarok
20
9.9k
要件定義・デザインフェーズでもAIを活用して、コミュニケーションの密度を高める
kazukihayase
0
110
[ JAWS-UG 東京 CommunityBuilders Night #2 ]SlackとAmazon Q Developerで 運用効率化を模索する
sh_fk2
3
410
会社紹介資料 / Sansan Company Profile
sansan33
PRO
6
380k
初めてAWSを使うときのセキュリティ覚書〜初心者支部編〜
cmusudakeisuke
1
250
なぜSaaSがMCPサーバーをサービス提供するのか?
sansantech
PRO
8
2.8k
機械学習を扱うプラットフォーム開発と運用事例
lycorptech_jp
PRO
0
230
ZOZOマッチのアーキテクチャと技術構成
zozotech
PRO
3
1.5k
RSCの時代にReactとフレームワークの境界を探る
uhyo
10
3.4k
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Side Projects
sachag
455
43k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Docker and Python
trallard
45
3.6k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
The Invisible Side of Design
smashingmag
301
51k
Producing Creativity
orderedlist
PRO
347
40k
A Modern Web Designer's Workflow
chriscoyier
696
190k
Bash Introduction
62gerente
615
210k
Building an army of robots
kneath
306
46k
Music & Morning Musume
bryan
46
6.8k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
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 ͷਅਖ਼ੑͷݕূ •
ূ໌ॻνΣʔϯͷݕূ