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
1.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
“パスワードレス認証への道" ユーザー認証の変遷とパスキーの関係
ritou
2
5.1k
パスキー導入の課題と ベストプラクティス、今後の展望
ritou
12
6k
Password-less Journey - パスキーへの移行を見据えたユーザーの準備 + α
ritou
1
120
Password-less Journey - パスキーへの移行を見据えたユーザーの準備 @ AXIES 2024
ritou
4
1.8k
OIDF-J EIWG 振り返り
ritou
2
71
そのQRコード、安全ですか? / Cross Device Flow
ritou
4
600
MIXI Mと社内外のサービスを支える認証基盤を作るためにやってきたこと #MTDC2024
ritou
3
730
Passkeys and Identity Federation @ OpenID Summit Tokyo 2024
ritou
2
900
Webアプリ開発者向け パスキー対応の始め方
ritou
4
6.7k
Other Decks in Technology
See All in Technology
Proxmox × HCP Terraformで始めるお家プライベートクラウド
lamaglama39
1
170
The Twin Mandate of Observability
charity
1
1.3k
エンジニアに定年なし! AI時代にキャリアをReboot — 学び続けて未来を創る
junjikoide
0
170
内部品質・フロー効率・コミュニケーションコストを悪化させ現場を苦しめかねない16の組織設計アンチパターン[超簡易版] / 16 Organization Design Anti-Patterns for Software Development
mtx2s
2
150
CloudFormationコンソールから、実際に作られたリソースを辿れるようになろう!
amixedcolor
0
110
旧から新へ: 大規模ウェブクローラの Perl から Go への移行 / YAPC::Fukuoka 2025
motemen
0
110
Flutterで実装する実践的な攻撃対策とセキュリティ向上
fujikinaga
1
290
【Android】テキスト選択色の問題修正で心がけたこと
tonionagauzzi
0
130
AI時代に必要なデータプラットフォームの要件とは by @Kazaneya_PR / 20251107
kazaneya
PRO
4
950
us-east-1 の障害が 起きると なぜ ソワソワするのか
miu_crescent
PRO
2
730
技術の総合格闘技!?AIインフラの現在と未来。
ebiken
PRO
0
240
コンピューティングリソース何を使えばいいの?
tomokusaba
1
110
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
GraphQLとの向き合い方2022年版
quramy
49
14k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
11
920
Thoughts on Productivity
jonyablonski
73
4.9k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Visualization
eitanlees
150
16k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
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