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
現状のFedCMの動作解説と OIDCとの親和性について- OpenID TechNight ...
Search
ritou
June 21, 2022
Technology
2
1k
現状のFedCMの動作解説と OIDCとの親和性について- OpenID TechNight vol.19
下記イベントの発表資料です。
https://openid.connpass.com/event/249281/
ritou
June 21, 2022
Tweet
Share
More Decks by ritou
See All by ritou
OIDF-J EIWG 振り返り
ritou
2
17
そのQRコード、安全ですか? / Cross Device Flow
ritou
4
340
MIXI Mと社内外のサービスを支える認証基盤を作るためにやってきたこと #MTDC2024
ritou
2
430
Passkeys and Identity Federation @ OpenID Summit Tokyo 2024
ritou
2
670
Webアプリ開発者向け パスキー対応の始め方
ritou
4
6k
様々なユースケースに利用できる "パスキー" の 導入事例の紹介とUXの課題解説 @ DroidKaigi 2023
ritou
3
4.5k
パスキーはユーザー認証を どう変えるのか?その特徴と導入における課題 @ devsumi 2023 9-C-1
ritou
6
12k
Android/Chromeで体験できる 認証のための標準化仕様の 現在と未来 @ DroidKaigi 2022
ritou
2
6.8k
C向けサービスで 使われている認証方式と安全な使い方
ritou
12
2.9k
Other Decks in Technology
See All in Technology
Zennのパフォーマンスモニタリングでやっていること
ryosukeigarashi
0
150
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
190
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
3
630
10XにおけるData Contractの導入について: Data Contract事例共有会
10xinc
6
660
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
『Firebase Dynamic Links終了に備える』 FlutterアプリでのAdjust導入とDeeplink最適化
techiro
0
130
組織成長を加速させるオンボーディングの取り組み
sudoakiy
2
210
OS 標準のデザインシステムを超えて - より柔軟な Flutter テーマ管理 | FlutterKaigi 2024
ronnnnn
0
200
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
2
330
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
250
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
4
230
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Teambox: Starting and Learning
jrom
133
8.8k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
100
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
The Invisible Side of Design
smashingmag
298
50k
Designing Experiences People Love
moore
138
23k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
For a Future-Friendly Web
brad_frost
175
9.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
Transcript
!"#$%&'(#)*+,- /01'-#2345678 /9%:01.;%<=>?@=A.BCDEFG.H$%&'(.I J?ACK.LMLLNONLF.
• https://ritou.hatenablog.com • FedCMೖ ͦͷ1 ~ ID࿈ܞͷ՝ͱFedCMͷΞϓϩʔν • FedCMೖ ͦͷ2
~ ݱঢ়ͷFedCM࣮ղઆ • FedCMೖ ͦͷ3 ~ OIDCͱͷࠩղઆ (·ͩԼॻ͖) $%&'(5678#PQ  2
• FedCMͷID࿈ܞϑϩʔ • OIDCͱͷࠩ • ࠩղফͷͨΊͷΞϓϩʔν RSTU  3
• IdP : Identity Provider. ଞαʔϏεʹରͯ͠ϢʔβʔใΛ ఏڙ͢Δ αʔϏε • RP
: Relying Party. IdPͷϢʔβʔใΛ༻͍ͯೝূػೳΛ࣮ ݱ͢Δ αʔϏε • Ϣʔβʔ : IdP/RPͦΕͧΕΛར༻͢ΔϢʔβʔ • ϒϥβ : FedCMʹରԠͨ͠ϒϥβ VWXY  4
1. ϢʔβʔIdPʹϩάΠϯ͍ͯ͠Δલఏ 2. Ϣʔβʔ͕RPͰ "IdPͰϩάΠϯ" Λར༻͠Α͏ͱͯ͠ɺRP FedCMͷAPIΛݺͼग़͢ 3. ϒϥβIdPʹରͯ͠ϩάΠϯதͷΞΧϯτใ(Ϧετ)Λཁ ٻ͠ɺID࿈ܞͷͨΊͷϓϩϯϓτΛRPυϝΠϯ্Ͱදࣔ͢Δ
4. ϒϥβϢʔβʔ͕બ/ڐՄͨ͠ΞΧϯτใʹඥͮ͘ೝূ ༻τʔΫϯ(OIDCͷIDToken)ΛIdPʹཁٻ͠ɺऔಘͨ͠ͷΛRPʹ ͢ɻRPͦΕΛೝূػೳʹར༻͢Δɻ 01Z[\]  5
VWXY-01Z[\]  6
1. ϢʔβʔIdPʹϩάΠϯ͍ͯ͠Δલఏ 2. Ϣʔβʔ͕RPͰ "IdPͰϩάΠϯ" Λར༻͠Α͏ͱͯ͠ɺRP FedCMͷAPIΛݺͼग़͢ 3. ϒϥβIdPʹରͯ͠ϩάΠϯதͷΞΧϯτใ(Ϧετ)Λཁ ٻ͠ɺID࿈ܞͷͨΊͷϓϩϯϓτΛRPυϝΠϯ্Ͱදࣔ͢Δ
4. ϒϥβϢʔβʔ͕બ/ڐՄͨ͠ΞΧϯτใʹඥͮ͘ೝূ ༻τʔΫϯ(OIDCͷIDToken)ΛIdPʹཁٻ͠ɺऔಘͨ͠ͷΛRPʹ ͢ɻRPͦΕΛೝূػೳʹར༻͢Δɻ 01Z[\]  7
^_`abcdefghigj  8
01Z[#klmin  9
opqr#01Z[]s  10
opqr#01Z[]s  11 • FedCM͕༗ޮ͔Ͳ͏͔ͷఆ • ID࿈ܞཁٻ
0&p.t%Au&uAuv]s  12
0&p.t%Au&uAuv]s  13 • Top level domain manifest • IdP
manifest f ile
'D?%:A.t%Au&uAu.v]s  14
'D?%:A.t%Au&uAu.v]s  15 • Client metadata Endpoint
hwxiy#z{`ij|njv]s  16
hwxiy#z{`ij|njv]s  17 • Client metadata Endpoint
}~•lal#01;C€%:v]s  18
}~•lal#01;C€%:v]s  19 • Accounts list endpoint
01;C€%:v•78‚ƒNV„…†  20
01;C€%:v•78‚ƒNV„…†  21 • ID Token Endpoint
PC/Android ͷ Chrome Canary Ͱಈ࡞֬ೝͰ͖·͢ɻ • IdP : https://ex-fedcm-idp.herokuapp.com/ •
RP : https://ex-fedcm-rp.herokuapp.com/ ‡ˆ‰Š  22
• FedCMͷID࿈ܞϑϩʔ • OIDCͱͷࠩ • ࠩղফͷͨΊͷΞϓϩʔν RSTU  23
• ݱঢ়ͷFedCMͰͰ͖Δ͜ͱʮϑϩϯτνϟϯωϧͰͷ IDTokenͷΓͱΓʯ $%&'(  24
• Authorization Code Flow • ϑϩϯτνϟϯωϧ : Authorization Code (+
ID Token) • όοΫνϟϯωϧ : ID Token / AT / RT • Implicit Flow <- ͜Εʹ͍ۙ • ϑϩϯτνϟϯωϧ : ID Token (+ α) • Hybrid Flow (ུ) /01'.$DC‹Œ  25
/01'.0t9D?<?A.$DC‹  26
• IdP metadata : OpenID Provider Con f iguration ͰٵऩՄೳ
• Clientใཁٻ : ະఆٛ • ΞΧϯτϦετཁٻ : ະఆٛ • ID Tokenཁٻ -> Implicit Flowʹ͍ۙ • ϒϥβʹAuthN Response͕͞ΕΔ • ະఆٛ/লུ͞Εͨύϥϝʔλ $%&'(.BŒ./01'  27
• ༻్ : ιʔγϟϧϩάΠϯػೳ(ϦιʔεΞΫηεͳ͠)ͷ γϣʔτΧοτͱͯ͠ͷΈར༻Ͱ͖Δ • ϦιʔεΞΫηε·Ͱαϙʔτͯ͠΄͍͠ਓ͑ͳ͍ • ID Token
ʹؚ·ΕΔ • IdPʹґଘ /01'.op  28
• ༻్ʹ͍ͭͯRPͱಉ༷ • ࣮ : FedCMରԠͷͨΊͷಠ֦ࣗு͕ඞཁ • Authorization Endpointͷ֦ுʁ •
OIDCະఆٛͷΤϯυϙΠϯτ • ID Token ʹؚ·ΕΔ • ݱঢ়ͰύϥϝʔλҎ֎ͰܾΊΔඞཁ͕͋Δ /01'.0&p  29
• FedCMͷID࿈ܞϑϩʔ • OIDCͱͷࠩ • ࠩղফͷͨΊͷΞϓϩʔν RSTU  30
FedCM - OIDC ؒͷࠩղফͷͨΊʹ 1. FedCM ͕ OIDC ʹدͤΔ 2.
FedCM ͷͨΊʹOIDCΛ֦ு͢Δ 1 Ͱ Implicit Flow ʹدͤΑ͏ͱͯ͠OIDCະఆٛͷϦΫΤε τ/Ϩεϙϯε͋ΔͷͰ 1, 2 ͷ྆ํ͕ඞཁͦ͏ɻ SAML֦ுେมͳΜ͡Όͳ͍ͷʁ •Ž+•#•‘#zghl’  31
• id_token_endpoint = Authorization Endpoint • Authentication Request • “response_type=id_token”
• “prompt=none” • “login_hint” + Cookie Ͱఆ • “scope”, “claims” ύϥϝʔλΛαϙʔτ $%&'(b/01'5“”f  32
• FedCMಠࣗͷϦΫΤετ • Client Metadata Request • Account List Request
• JSONܗࣜͰID TokenΛཁٻ • response_mode: body # body Ͱ Authentication Response Λཁٻ • redirect_uri: “urn…” # fedcm ༻ͷͱ͔ /01'.•–A%:Œ?C:.—CJ.$%&'(  33
• ݱঢ়ͷFedCMͰߦΘΕ͍ͯΔϦΫΤετ/ϨεϙϯεΛઆ໌ ͨ͠ • FedCM ͱ OIDC ͷϓϩτίϧͱͯ͠ͷҧ͍Λઆ໌ͨ͠ • OIDC
Implicit Flow ૬ͷγϣʔτΧοτతͳཱͪҐஔʹ ͳ͍ͬͯΔ • IdPͷՃରԠͷίετ͕͋ΔҹͳͷͰɺࠩղফͷΞϓ ϩʔνʹࠓޙ ˜-‘  34
™š›  35