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
STORESにおける OpenID Connect/OAuth 2.0の活用
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
AkihikoOkubo
December 15, 2025
Technology
0
18
STORESにおける OpenID Connect/OAuth 2.0の活用
このdeckは11/26に開催した株式会社STORESのTech Conf 2025での発表資料です。STORESにおけるOpenID Connect、OAuth 2.0の活用事例を紹介します。
AkihikoOkubo
December 15, 2025
Tweet
Share
More Decks by AkihikoOkubo
See All by AkihikoOkubo
STORESにおける OpenID Connect/OAuth 2.0の活用
akihikookubo
0
10
Core NFCをさわってみた
akihikookubo
0
7
Project Jigsaw
akihikookubo
0
5
Other Decks in Technology
See All in Technology
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
130
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
3
220
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
240
クレジットカード決済基盤を支えるSRE - 厳格な監査とSRE運用の両立 (SRE Kaigi 2026)
capytan
6
2.8k
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
170
ECS障害を例に学ぶ、インシデント対応に備えたAIエージェントの育て方 / How to develop AI agents for incident response with ECS outage
iselegant
2
190
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
680
Context Engineeringの取り組み
nutslove
0
380
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
200
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.2k
FinTech SREのAWSサービス活用/Leveraging AWS Services in FinTech SRE
maaaato
0
130
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
260
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
67
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
350
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Visualization
eitanlees
150
17k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
320
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.4k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Git: the NoSQL Database
bkeepers
PRO
432
66k
The Curious Case for Waylosing
cassininazir
0
240
Transcript
STORESにおける OpenID Connect/OAuth 2.0の活用 大久保彰彦
自己紹介: 大久保 彰彦 • ID基盤や各サービスの統合周りの開発などを担当 • 比較的バックエンド、インフラ寄り • 主にGolang、Railsで開発してます •
歴史好きでYouTubeチャンネル『COTEN RADIO』推し
イントロダクション なぜSTORESにOpenID Connect/ OAuth 2.0が必要 だったのか
STORESは複数の事業会社が集まって作られた 当然アプリケーションも DBも クラウドもバラバラ
独立したサービス群を「ひとつのSTORES」として繋ぎ合わせるために、 シングルサインオン (SSO)やセッションマネジメント 、 サービス間通信の一貫した認可 が必要。
そのためにIdPを作成 ID基盤「STORESアカウント」を作成し、全サー ビスに導入。 • OpenID Connect/OAuth 2.0に準拠 • SSOを実現
• セキュアな認証や認可Tokenの発行
本発表の内容 IdP = STORESアカウントの活用事例を大きく二つ紹介します。 1. 複数サービス間のSSO(シングルサインオン)での活用 2. サービス間通信の認可での活用
軽く用語整理 IdP(ID Provider) OIDCに基づく認証処理やOAuth 2.0に基づくトークン発行機能を持つ ID 基盤 RP(Relying Party) 予約やネットショップなど、IdPを利用して認証・認可を受ける
各サービス ID Token OIDCで定義されている、認証情報を表す Token Access Token OAuth 2.0で定義されている、認可用Token Refresh Token OAuth 2.0で定義されている、Access Tokenを再発行するためのToken 認可コードフロー ユーザーがサービスにログインする際、 IdPで認証後に認可コードを取得 し、RPがそのコードを使ってtokenを安全に取得するフロー
複数サービス間の SSOでの活用
話したいこと • STORESアカウントのログインセッションを用いたシングルサインオン(SSO) の仕組み • Back-Channel Logout、Front-Channel Logoutを用いたシングルサイン アウトの仕組み
SSOの実現 1. RP→IdPへ認可リクエスト 2. IdPのログインセッション があ れば認証情報入力をスキップ して認可コードを発行する 3. RPは認可コードフローで
tokenを得る 4. RPはそれぞれログインセッ ションを発行する
突然ですが、みなさんの開発しているシステムで、 ログインセッションがずれたことはありますか?
まずログインセッションずれの説明 各サービスから単純に個別にログ アウトできる方式だと、サービス間 でログインしているアカウントが揃 わないことがある。 認可エラーや、意図しないアカウン トでの操作を誘発。
シングルサインアウトが必要 ログアウト連携 (シングルサインアウト )が必要。 OIDCで以下の仕様が定義されているので活用する。 OpenID Connect Back-Channel Logout 1.0
OpenID Connect Front-Channel Logout 1.0
Back-Channel Logout = IdPをログアウトした時にRPもログアウトする仕組み 1. IdPのログインセッションごとに 一意のsidを発行 2. sidを認可コードフロー内でRP に永続化
3. ユーザがIdPをログアウトした 際、sidをRPに通知 4. RPはsidに紐づくログインセッ ションを破棄
Front-Channel Logout = RPをログアウトした時にIdPもログアウトさせる仕組み 1. RPをログアウト。ログインセッ ションを破棄 2. IdPのログアウト連携URLへリ ダイレクト
3. IdPをログアウト 4. IdPからRPのPost Logout URLへリダイレクト
複数サービス間のSSOでの活用: まとめ • 標準に従って仕様通りに実装することで、複数のサービスにまたがるセッ ションのマネジメント戦略をセキュアに実現できる • Back-Channel Logout、Front-Channel Logoutを正しく実装することで、 サービス間を遷移した時に、意図せずアカウントが切り替わることがなくな
り、統合された体験を実現できる
サービス間通信の 認可処理での活 用
「統合されたSTORES」らしい機能を開発するにはサー ビス間の通信 が不可欠。
• 複数のAPIから売上を取得 • APIがさらに別のAPIを呼び出 すことがある 例: ネットショップと予約と決済の売上げの合計を画面に表示したい場合
• セキュリティリスク • 無限ループの危険 • 障害発生時の影響範囲が見 通せない サービス間の直接通信を許容してしまうと...
各サービスはAPI-Gatewayを介して通信する • Access Tokenを使って認可 • API-Gatewayは認可されたリ クエストのみバックエンドへ転 送 • ゼロトラストなアプローチに基
づき、一貫した認可処理を実 現
一貫しているものの運用上では多くの問題に直面 実際に起きた課題に対するSTORESでの対応を紹介 • Refresh Tokenの無効化戦略の見直し • 一貫したアクセス制御の難しさ • 障害発生時のトレース困難
1: Refresh Tokenの無効化戦略の見直し
みなさんの開発しているシステムで、 大量のセッションが突然ログアウトされたことはありますか?
実例: Token Refreshのレースコンディションによる大量ログアウト • 当時のIdPの仕様 ◦ Refresh Tokenは一度の 利用で無効化 ◦
無効化済みのRefresh Tokenが利用された場合 エラーとし、Grant(認可フ ローで得た権限)ごと破棄 ≒ログアウト
Refresh Tokenを一定期間再利用可能として対応 • 一定期間のRefresh Tokenの 再利用を許可 • 例えばGoogle OAuthでは、 Refresh
Tokenは明示的な Revokeか、一定世代以上古 いものから無効化 • 利便性とセキュリティの妥当 なトレードオフ
2: 一貫したアクセス制御の難しさ
認可スコープを活用して一貫したアクセス制御を実現したい • RFC6749 - Access Token Scopeで定義されている認可 スコープを利用 • Tokenが持つスコープを利用
してAPI-Gatewayで認可制御 を行う • STORESではこの方式を採用
みなさんは、あるAPIを実行するときに、 そのAPIの内部でさらに呼び出されるAPIを 網羅的に把握できますか?
認可スコープを利用したアクセス制御による開発負荷の増加 • システムが複雑になるにつれ 開発負荷が増加 ◦ 開発者の認知の限界 • 十分な認可制御には各サー ビスでの認可処理が必要 ◦
認可スコープの形骸化
一貫したアクセス制御と開発効率のトレードオフ • STORES内部のサービスが使うOAuth Client限定で、認可スコープチェック をスキップ • API-Gatewayでの一貫したアクセス制御はある程度諦める • 現時点では開発効率向上のメリットの方が大きく妥当なトレードオフ
(補足) ※STORESは3rd Party向けの外部公開APIの提供も行っており、そちらは認可 スコープのチェックを継続
3: 障害発生時のトレース困難
あるAPIを呼び出した時に、 「internal_server_error」というレスポンスが返りました。 呼び出し先のAPIのログを確認すると、また別のAPI呼び出しでの エラーログを見つけました。 原因に辿り着くまでこれを繰り返すことに耐えられますか?
分散トレーシングとは • 複数のサービスをまたいで処理されるリクエストの処理フローを可視化・追 跡する技術 • Trace IDやSpan IDを使ってサービスを跨ぐリクエストをトレースする •
遅延やエラーの発生箇所を特定するために便利 • 代表的な実装やサービスとして OpenTelemetry、AWS X-Ray、Cloud Trace、Datadog APM などがある 複数サービスに跨る通信の障害調査には分散トレーシングが有効
分散トレーシングを活用したトレーサビリティの確保 Datadog APMを活用してAPI Call Stack全体の分散トレーシン グに対応。 • リクエストを処理するために利 用したサービスが一覧で分か る
• 障害発生点のログまですぐに 辿り着くことができる
サービス間通信における認可での活用: まとめ • OAuth 2.0のTokenを用いて一貫した認可処理を実現している • 実用する上では運用に合わせた設計・トレードオフが必要だった ◦ Refresh Tokenの無効化戦略を緩和し、一定期間再利用可能とする
◦ 認可スコープによる認可制御を一部オミット ◦ 分散トレーシング(Datadog APM)によるトレーサビリティの確保
全体まとめ • OpenID Connect/OAuth 2.0に準拠することで、複雑なアーキテクチャを手 早くセキュアに実現することができる • 実際に運用する中では、利便性や開発効率を向上させるための現実的なト レードオフ戦略が必要
今後の課題 • 各所のオーバーヘッドを取り除いてパフォーマンスを改善する • サービス間で共通で利用するドメインの切り出しなど、リソースの最適配置 • 深くネストした呼び出しや再帰呼び出し箇所のリアーキテクチャ STORESはこれらの課題に共に立ち向かう仲間を積極募集中です!!ご興 味ある方是非お声かけください!