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
OIDC仕様に準拠した Makuake ID連携基盤構築の裏側
Search
Y.Matsuda
January 19, 2023
Programming
2.9k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
OIDC仕様に準拠した Makuake ID連携基盤構築の裏側
Y.Matsuda
January 19, 2023
More Decks by Y.Matsuda
See All by Y.Matsuda
Accelerating the Feedback Loop of OpenTelemetry Instrumentation with otel-tui
ymtdzzz
1
830
Observability Technology Selection Tips
ymtdzzz
6
1.7k
Building Observability Infrastructure with OpenTelemetry and SaaS
ymtdzzz
2
1.6k
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
1.1k
OpenTelemetryでRailsのパフォーマンス分析を始めてみよう(KoR2024)
ymtdzzz
5
5.1k
Other Decks in Programming
See All in Programming
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
2
110
【やさしく解説 設計編 #1】「ドメイン駆動」と「実装駆動」ってなに? 〜設計の考え方を、たとえ話で学ぼう〜
panda728
PRO
1
140
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
130
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.6k
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
150
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.8k
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
180
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
390
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
140
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
380
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
9.4k
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
440
Featured
See All Featured
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
660
Rails Girls Zürich Keynote
gr2m
96
14k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
360
YesSQL, Process and Tooling at Scale
rocio
174
15k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
270
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
570
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
600
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Transcript
OIDC仕様に準拠した ID連携基盤構築の裏側 2022.01.19 株式会社マクアケ 松田陽佑(@ymtdzzz)
自己紹介 Copyright © Makuake, Inc. All Rights Reserved. 2 松田陽佑(@ymtdzzz)
株式会社マクアケ 開発本部 Re-Architectureチーム所属 - 認証・認可基盤サービスの開発と保守( 2021年10月入社) - 最近までID連携(OIDC)基盤の開発をメインで担当 - 分散トレーシング、APMの導入を進めています - 興味分野 - Kubernetes - CKA, CKAD - OpenTelemetry(分散トレーシング) - (たまに)Contribute - OpenTelemetry Advent Calendar 2022
今日話したいこと Copyright © Makuake, Inc. All Rights Reserved. 3 話すこと
- 出来立てホヤホヤのID連携基盤の設計〜構築フェーズのお話 - makuakeの既存アーキテクチャを踏まえ、OIDC準拠のID連携基盤をどのように構築したか - プロジェクト要件、マクアケのアーキテクチャ固有の課題 - アーキテクチャ - チャレンジ - 認可フローススクラッチ or ライブラリやBaaSの利用 - 新認証画面の実装 話さないこと - OIDCの細かい仕様について - 実装レベルの話
4 ID連携基盤??
MakuakeのID連携基盤 Copyright © Makuake, Inc. All Rights Reserved. 5 -
Makuake本体の認証情報を外部サービスに連携する仕組み - 認証、認可の合わせ技 - OpenID Connect仕様に準拠 - 2022年9月にリリース🐣 - Makuake STOREで利用中(RPはまだ一つ) 認証 認可 外部サイト(RP) Makuake Makuake 外部サイト(RP) 認可フロー開始(認可エンドポイント) ・認可コードでトークン取得( tokenエンドポイント) ・IDトークン署名検証 ・必要に応じてユーザー情報取得( userinfoエンドポイント)
6 開発要件と課題
要件 - まずはMakuake STOREへのID連携組み込みがファーストステップ - デッドライン:Makuake STOREリリースまで - 技術標準であるOpenID
Connect仕様への準拠 - (将来的に)Makuake関連サービスや、それ以外の外部サービスとの連携 - Webバックエンドでの使用を想定: Basicな認可コードフローのみがスコープ アーキテクチャ上の課題 新規構築が多いので認証サービスリプレースのような難しさは無いものの・・・ - 認証画面の新規実装したい - ユーザー関連のサービス新規実装 したい 開発要件と課題 Copyright © Makuake, Inc. All Rights Reserved. 7
認証画面の新規実装したい - 認証サービスはAPIのみ提供 - 画面はモノリスのビルトイン認証画面 のみ - 認証サービスに生やした認証画面を使う(まずは OIDCから)
ユーザー関連のサービス新規実装したい - 認証サービスでは認証に関わるデータ のみ保持 - ユーザーのプロフィール関連データ は依然としてモノリスのDBに存在 開発要件と課題 Copyright © Makuake, Inc. All Rights Reserved. 8 ※絶対必要ではないが今後を見据えてこのタイミングでやっておきたい
9 アーキテクチャ検討
アーキテクチャ検討 登場人物 - 認証サーバー(IdP) - 認証API(auth-api) - 認証画面(auth-web)※新規実装 - 認可サーバー(oidc-provider)※新規実装
- authZ endpoint - token endpoint - userinfo - 外部API GW ※新規実装 - ユーザーサービス(user-api)※新規実装 Copyright © Makuake, Inc. All Rights Reserved. 10
アーキテクチャ検討 - 認証画面(auth-web) バックエンド - 認証APIと同様にKubernetes(GKE)上に構築 - マルチテナントによるコストメリット - Golangで実装
フロントエンド - CDNで配信(図では省略) - Vuejs+Typescriptで実装 ネットワーキング - Traffic Director - xDSを用いたプロキシレスのgRPC通信を実現 Copyright © Makuake, Inc. All Rights Reserved. 11
バックエンド - 認証画面とほぼ同様 - JWT署名鍵はKMSで管理 - シークレット情報の隠蔽 - パフォーマンス的な懸念については負荷試験で担保
DB - Cloud Spannerを採用 - auth-apiで実績あり - マルチテナントによるコストメリット フロントエンド - 認証画面と同様 アーキテクチャ検討 - 認可サーバー(oidc-provider) Copyright © Makuake, Inc. All Rights Reserved. 12
アーキテクチャ検討 - ユーザーサービス Copyright © Makuake, Inc. All Rights Reserved.
13 バックエンド - ECS上に構築 - Auroraに近い - 将来的なオーナーシップの変更 - ユーザーサービス自体はprivate APIとして構築 し、外部API GWによって公開 - ユーザーサービス - OIDCを意識しない仕様 - 外部API GW - 流量制限 - OIDC固有の責務 - tokenチェック - scope判定
アーキテクチャ検討 - 全体 Copyright © Makuake, Inc. All Rights Reserved.
14 ※CDN, LB, WAF等は省略
15 チャレンジ
チャレンジ - スクラッチによる認可フローの実装 Copyright © Makuake, Inc. All Rights Reserved.
認可フローの実装手段 - スクラッチ - OSSやマネージドBaaSの使用(hydra, Authlete) スクラッチを選択した理由 - 開発スコープが限られていたため実装コストのリスクは許容範囲と判断 - 認可コードフロー、特にBasic OPのカバーが要件 将来的にどこまでカバーするニーズが生じるかは未知数だが・・・ - OSSやBaaSへのシフト後も作成した実装の多くは無駄にならない - チーム内に有識者がいた 16 ここは無駄にならない 出典:https://www.authlete.com/ja/
チャレンジ - 新認証画面の実装 Copyright © Makuake, Inc. All Rights Reserved.
背景 (開発要件と課題より)モノリスの既存認証画面から認証サービス側の認証画面への移行 →このタイミングでOIDCだけでも新認証画面を使うようにしたい リスク Makuake STOREリリースまでに認可基盤の提供ができない 前提 makuake本体の既存認証画面でもOIDCフローは実現可能 どうしたか 既存認証を使用するプランBを持った上で新認証画面実装 17 既存認証でOIDCフローが実 現可能であることを検証 新認証画面前提で実装 新認証画面でいくかどうか最 終ジャッジ リリース (プランBの場合)既存認証に 向き先変更
18 サービスインまでの流れ
動作確認用RPの作成 Copyright © Makuake, Inc. All Rights Reserved. 19 OIDC自体の動作確認のためのRP(client)実装
- Vue+Typescript - 外部には公開しないOIDC基盤開発者用ツール
負荷試験&キャパシティプランニング Copyright © Makuake, Inc. All Rights Reserved. 20 条件
- 定常時・ピーク時 - メディア露出時のスパイク(定常時ピークの10~200倍) - スケーリングにかかる時間検証(K8s HPA) - ロングランテスト(3日程度) - メモリリークなど短時間の試験で検出しにくい観点 環境 - K6 Cloud - K6 on EC2 ※ロングランテストのみ
連携先への組み込みとリリース Copyright © Makuake, Inc. All Rights Reserved. 21 組み込み手順書ベースで組み込んでもらう
- 元データはmarkdownでドキュメント化 - Gitbook等でpublish可能な状態 →OIDC準拠なのでライブラリやプラグイン導入で組み込み完了 脆弱性診断(外部業者へ委託)を実施後、無事リリース🎉 - デッドライン ✅ - OpenID Connect仕様への準拠 ✅ - 認証画面の新規実装 ✅ - ユーザー関連のサービス新規実装 ✅ リリース後は順調に稼働中
22 今後の課題
今後の課題 Copyright © Makuake, Inc. All Rights Reserved. 23 認証改善
- 認証画面統一 - 認証手段追加 OIDC Certificationの取得 - Basic OP取得準備完了 SLI/SLO運用 - 目下運用中 - APM、Distributed Tracing活用 他フローへのサポート、OIDC公開 ※未定 - developer consoleなど開発画面の開発
24 Re-Architectureチームの旅は続く・・・
絶賛採用中! Copyright © Makuake, Inc. All Rights Reserved. 25 https://hrmos.co/pages/makuake/jobs/0000081
26 Thank you !
Copyright © Makuake, Inc. All Rights Reserved.