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
Snowflake Intelligenceにはこうやって立ち向かう!クラシルが考えるAI Readyなデータ基盤と活用のためのDataOps
gappy50
0
180
AWSで始める実践Dagster入門
kitagawaz
1
610
ブロックテーマ時代における、テーマの CSS について考える Toro_Unit / 2025.09.13 @ Shinshu WordPress Meetup
torounit
0
120
バイブスに「型」を!Kent Beckに学ぶ、AI時代のテスト駆動開発
amixedcolor
2
540
Autonomous Database - Dedicated 技術詳細 / adb-d_technical_detail_jp
oracle4engineer
PRO
4
10k
生成AIでセキュリティ運用を効率化する話
sakaitakeshi
0
670
Android Audio: Beyond Winning On It
atsushieno
0
110
下手な強制、ダメ!絶対! 「ガードレール」を「檻」にさせない"ガバナンス"の取り方とは?
tsukaman
2
440
20250903_1つのAWSアカウントに複数システムがある環境におけるアクセス制御をABACで実現.pdf
yhana
3
550
roppongirb_20250911
igaiga
1
220
LLMを搭載したプロダクトの品質保証の模索と学び
qa
0
1k
Practical Agentic AI in Software Engineering
uzyn
0
110
Featured
See All Featured
Side Projects
sachag
455
43k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Faster Mobile Websites
deanohume
309
31k
How to Ace a Technical Interview
jacobian
279
23k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
The Art of Programming - Codeland 2020
erikaheidi
56
13k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Being A Developer After 40
akosma
90
590k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
112
20k
Mobile First: as difficult as doing things right
swwweet
224
9.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 ͷਅਖ਼ੑͷݕূ •
ূ໌ॻνΣʔϯͷݕূ