Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OIDC仕様に準拠した Makuake ID連携基盤構築の裏側

Y.Matsuda
January 19, 2023

OIDC仕様に準拠した Makuake ID連携基盤構築の裏側

Y.Matsuda

January 19, 2023
Tweet

Other Decks in Programming

Transcript

  1. OIDC仕様に準拠した

    ID連携基盤構築の裏側

    2022.01.19

    株式会社マクアケ

    松田陽佑(@ymtdzzz)


    View Slide

  2. 自己紹介

    Copyright © Makuake, Inc. All Rights Reserved.

    2

    松田陽佑(@ymtdzzz)

    株式会社マクアケ 開発本部 Re-Architectureチーム所属

    - 認証・認可基盤サービスの開発と保守( 2021年10月入社)

    - 最近までID連携(OIDC)基盤の開発をメインで担当 

    - 分散トレーシング、APMの導入を進めています 

    - 興味分野

    - Kubernetes

    - CKA, CKAD

    - OpenTelemetry(分散トレーシング)

    - (たまに)Contribute

    - OpenTelemetry Advent Calendar 2022


    View Slide

  3. 今日話したいこと

    Copyright © Makuake, Inc. All Rights Reserved.

    3

    話すこと

    - 出来立てホヤホヤのID連携基盤の設計〜構築フェーズのお話

    - makuakeの既存アーキテクチャを踏まえ、OIDC準拠のID連携基盤をどのように構築したか

    - プロジェクト要件、マクアケのアーキテクチャ固有の課題

    - アーキテクチャ

    - チャレンジ

    - 認可フローススクラッチ or ライブラリやBaaSの利用

    - 新認証画面の実装

    話さないこと

    - OIDCの細かい仕様について

    - 実装レベルの話


    View Slide

  4. 4
    ID連携基盤??


    View Slide

  5. MakuakeのID連携基盤

    Copyright © Makuake, Inc. All Rights Reserved.

    5

    - Makuake本体の認証情報を外部サービスに連携する仕組み

    - 認証、認可の合わせ技

    - OpenID Connect仕様に準拠

    - 2022年9月にリリース🐣

    - Makuake STOREで利用中(RPはまだ一つ)

    認証
    認可
    外部サイト(RP)
    Makuake
    Makuake 外部サイト(RP)
    認可フロー開始(認可エンドポイント)
    ・認可コードでトークン取得(
    tokenエンドポイント)
    ・IDトークン署名検証
    ・必要に応じてユーザー情報取得(
    userinfoエンドポイント)

    View Slide

  6. 6
    開発要件と課題


    View Slide

  7. 要件

    - まずはMakuake STOREへのID連携組み込みがファーストステップ

    - デッドライン:Makuake STOREリリースまで

    - 技術標準であるOpenID Connect仕様への準拠

    - (将来的に)Makuake関連サービスや、それ以外の外部サービスとの連携 

    - Webバックエンドでの使用を想定: Basicな認可コードフローのみがスコープ 


    アーキテクチャ上の課題

    新規構築が多いので認証サービスリプレースのような難しさは無いものの・・・

    - 認証画面の新規実装したい

    - ユーザー関連のサービス新規実装
    したい

    開発要件と課題

    Copyright © Makuake, Inc. All Rights Reserved.

    7


    View Slide

  8. 認証画面の新規実装したい

    - 認証サービスはAPIのみ提供

    - 画面はモノリスのビルトイン認証画面
    のみ

    - 認証サービスに生やした認証画面を使う(まずは
    OIDCから)


    ユーザー関連のサービス新規実装したい

    - 認証サービスでは認証に関わるデータ
    のみ保持

    - ユーザーのプロフィール関連データ

    は依然としてモノリスのDBに存在

    開発要件と課題

    Copyright © Makuake, Inc. All Rights Reserved.

    8

    ※絶対必要ではないが今後を見据えてこのタイミングでやっておきたい

    View Slide

  9. 9
    アーキテクチャ検討


    View Slide

  10. アーキテクチャ検討

    登場人物

    - 認証サーバー(IdP)

    - 認証API(auth-api)

    - 認証画面(auth-web)※新規実装

    - 認可サーバー(oidc-provider)※新規実装

    - authZ endpoint

    - token endpoint

    - userinfo

    - 外部API GW ※新規実装

    - ユーザーサービス(user-api)※新規実装

    Copyright © Makuake, Inc. All Rights Reserved.

    10


    View Slide

  11. アーキテクチャ検討 - 認証画面(auth-web)

    バックエンド

    - 認証APIと同様にKubernetes(GKE)上に構築

    - マルチテナントによるコストメリット

    - Golangで実装

    フロントエンド

    - CDNで配信(図では省略)

    - Vuejs+Typescriptで実装

    ネットワーキング

    - Traffic Director

    - xDSを用いたプロキシレスのgRPC通信を実現

    Copyright © Makuake, Inc. All Rights Reserved.

    11


    View Slide

  12. バックエンド

    - 認証画面とほぼ同様

    - JWT署名鍵はKMSで管理

    - シークレット情報の隠蔽

    - パフォーマンス的な懸念については負荷試験で担保

    DB

    - Cloud Spannerを採用

    - auth-apiで実績あり

    - マルチテナントによるコストメリット

    フロントエンド

    - 認証画面と同様

    アーキテクチャ検討 - 認可サーバー(oidc-provider)

    Copyright © Makuake, Inc. All Rights Reserved.

    12


    View Slide

  13. アーキテクチャ検討 - ユーザーサービス

    Copyright © Makuake, Inc. All Rights Reserved.

    13

    バックエンド

    - ECS上に構築

    - Auroraに近い

    - 将来的なオーナーシップの変更

    - ユーザーサービス自体はprivate APIとして構築

    し、外部API GWによって公開

    - ユーザーサービス

    - OIDCを意識しない仕様

    - 外部API GW

    - 流量制限

    - OIDC固有の責務

    - tokenチェック

    - scope判定


    View Slide

  14. アーキテクチャ検討 - 全体

    Copyright © Makuake, Inc. All Rights Reserved.

    14

    ※CDN, LB, WAF等は省略

    View Slide

  15. 15
    チャレンジ


    View Slide

  16. チャレンジ - スクラッチによる認可フローの実装

    Copyright © Makuake, Inc. All Rights Reserved.

    認可フローの実装手段

    - スクラッチ

    - OSSやマネージドBaaSの使用(hydra, Authlete)

    スクラッチを選択した理由

    - 開発スコープが限られていたため実装コストのリスクは許容範囲と判断

    - 認可コードフロー、特にBasic OPのカバーが要件

    将来的にどこまでカバーするニーズが生じるかは未知数だが・・・

    - OSSやBaaSへのシフト後も作成した実装の多くは無駄にならない

    - チーム内に有識者がいた

    16

    ここは無駄にならない
    出典:https://www.authlete.com/ja/

    View Slide

  17. チャレンジ - 新認証画面の実装

    Copyright © Makuake, Inc. All Rights Reserved.

    背景

    (開発要件と課題より)モノリスの既存認証画面から認証サービス側の認証画面への移行

    →このタイミングでOIDCだけでも新認証画面を使うようにしたい

    リスク

    Makuake STOREリリースまでに認可基盤の提供ができない

    前提

    makuake本体の既存認証画面でもOIDCフローは実現可能

    どうしたか

    既存認証を使用するプランBを持った上で新認証画面実装

    17

    既存認証でOIDCフローが実
    現可能であることを検証
    新認証画面前提で実装
    新認証画面でいくかどうか最
    終ジャッジ リリース
    (プランBの場合)既存認証に
    向き先変更

    View Slide

  18. 18
    サービスインまでの流れ


    View Slide

  19. 動作確認用RPの作成

    Copyright © Makuake, Inc. All Rights Reserved.

    19

    OIDC自体の動作確認のためのRP(client)実装

    - Vue+Typescript

    - 外部には公開しないOIDC基盤開発者用ツール


    View Slide

  20. 負荷試験&キャパシティプランニング

    Copyright © Makuake, Inc. All Rights Reserved.

    20

    条件

    - 定常時・ピーク時

    - メディア露出時のスパイク(定常時ピークの10~200倍)

    - スケーリングにかかる時間検証(K8s HPA)

    - ロングランテスト(3日程度)

    - メモリリークなど短時間の試験で検出しにくい観点

    環境

    - K6 Cloud

    - K6 on EC2 ※ロングランテストのみ


    View Slide

  21. 連携先への組み込みとリリース

    Copyright © Makuake, Inc. All Rights Reserved.

    21

    組み込み手順書ベースで組み込んでもらう

    - 元データはmarkdownでドキュメント化

    - Gitbook等でpublish可能な状態

    →OIDC準拠なのでライブラリやプラグイン導入で組み込み完了


    脆弱性診断(外部業者へ委託)を実施後、無事リリース🎉

    - デッドライン ✅

    - OpenID Connect仕様への準拠 ✅

    - 認証画面の新規実装 ✅

    - ユーザー関連のサービス新規実装 ✅

    リリース後は順調に稼働中


    View Slide

  22. 22
    今後の課題


    View Slide

  23. 今後の課題

    Copyright © Makuake, Inc. All Rights Reserved.

    23

    認証改善

    - 認証画面統一

    - 認証手段追加

    OIDC Certificationの取得

    - Basic OP取得準備完了

    SLI/SLO運用

    - 目下運用中

    - APM、Distributed Tracing活用

    他フローへのサポート、OIDC公開 ※未定

    - developer consoleなど開発画面の開発


    View Slide

  24. 24
    Re-Architectureチームの旅は続く・・・


    View Slide

  25. 絶賛採用中!

    Copyright © Makuake, Inc. All Rights Reserved.

    25

    https://hrmos.co/pages/makuake/jobs/0000081


    View Slide

  26. 26
    Thank you !


    View Slide

  27. Copyright © Makuake, Inc. All Rights Reserved.


    View Slide