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

モノリシックな「Chatwork」から、認証基盤をどのように切り出していったか

kubell
April 20, 2025

 モノリシックな「Chatwork」から、認証基盤をどのように切り出していったか

2025年4月23日に株式会社overflow主催イベント「LayerX/kubellの実例から学ぶ プロダクトが大きくなっても壊れない 認証設計とは」での登壇資料です。
イベントページ:https://offers-jp.connpass.com/event/349513/
登壇者:株式会社kubell プロダクト開発ユニット 認証グループ 田中 浩一

kubell

April 20, 2025
Tweet

More Decks by kubell

Other Decks in Business

Transcript

  1. 目次 CONTENTS 01 | Chatwork株式会社から株式会社kubellへ 02 | IDaaS(Auth0)導入と移行開発の実 際 03

    | 認証基盤の概念的整理(BPaaS戦略の 下での、認証基盤の立ち位置)
  2. 前提知識 • 「IDaaS(”IDentity as a Service”)」とは?: ◦ IDやパスワードを一元集中管理し、ログイン画面を含む認証機能を提供するSaaS ◦ IAM(”Identity

    and Access Management”)機能を提供するSaaS(”IAM as a Service”と言ってもよい) • 「Auth0」とは?: ◦ Okta社によって運営されるIDaaSの一つ(現在は「Okta CIC(”Customer Identity Cloud”)」と称されてい る) • 他にIDaaSにはどんなものがあるか?: ◦ Amazon Cognito ◦ Microsoft Entra ID / Entra External ID ◦ Google Cloud Identity Platform ◦ GMO トラスト・ログイン • 「CIAM(”Customer Identity and Access Management”)」とは?: ◦ 企業内の従業員のID管理ではなく、サービスを利用する顧客のID管理を特に意図したIAM機能 ▪ 従業員のID管理を意図したIAM機能を「EIAM(”Enterprise Identity and Access Management”)」と称 することも ◦ IDaaSによって、CIAM向け、EIAM向けといった違いがある 12
  3. IDaaS選定時の比較項目 • パフォーマンス: ◦ 「Chatwork」のMAU推移予測に対して、十分カバーできるパフォーマンスプランを提供している事 • 費用体系: ◦ CIAM目的であり、MAUベースの料金体系である事 •

    不正ログイン対策: ◦ 不正ログイン対策機能に関して、IDaaS自身が継続的に拡充を行なっている事 • その他、各機能のFit/Gap: ◦ CIAM向けであること ◦ SAML認証, Social Login, CAPTCHA, MFA, ...といった機能が直接サポートされている、または実現可能である事 ◦ URLに独自ドメインが使用できる事, ログイン画面のカスタマイズができること ◦ ネイティブモバイルアプリ向けにもログイン画面を提供できる事 14
  4. Auth0を前提とした認証機能部位リプレース開発計画、その1 • 基本的な開発ミッション: ◦ “「Chatwork」の認証機能部位を、Auth0にリプレースする” • リプレース開発の技術的要点: ◦ モノリシックに作り込まれている「Chatwork」の認証機能部位を、Auth0というOIDC認証サーバー (OpenID

    Provider)と、「Chatwork」というOIDCクライアント(Relying Party)との構成に分離する こと ▪ Auth0は、そもそもOIDC認証サーバー(OpenID Provider)である ▪ 「Chatwork」を、OIDCクライアント(Relying Party)として振る舞うよう改修する 15
  5. 「認証要素」を移行計画に応じて分類する A. そのままAuth0提供機能を利用する ✓ (将来の)認証基盤として、「Chatwork」以外のプロダクトへも提供したいもの ✓ かつ、Auth0にそのまま置き換え可能な機能が有る B. Auth0 Actionsを利用して、カスタム実装する

    ✓ (将来の)認証基盤として、「Chatwork」以外のプロダクトへも提供したいもの ✓ しかし、Auth0にそのまま置き換え可能な機能が無い C. 「Chatwork」に残す ✓ 「Chatwork」というプロダクト固有の機能だと判断されるもの 19
  6. 「認証要素」をそれぞれ移行開発する • パスワード認証, SAML認証, Google認証, Apple認証, アカウントロック, ... ✓ 基本的な認証機能は、Auth0提供の当該機能をそのまま利用

    ⇒ Auth0へ移行するので、既存コードは破棄する • 2段階認証, 休眠アカウント・メール認証, ... ✓ Auth0 Actionsを利用してカスタム実装しつつ、OIDC認証サーバー側へ移行 ⇒ コードを切り出して、Auth0 Actionsと連携して動くものに改変する • アカウント停止, 組織間移行中, ... ✓ 「Chatwork」側の責務として残す ⇒ OIDCクライアントとして、Callbackエンドポイントにて実現されるように、コードを再編成する 20
  7. ・・・と、さらっと言ってますが、 • 実際の移行開発は、 ◦ Auth0提供の相当機能をそのまま利用する機能部位については、、、 ⇒ 既存コードは破棄! ◦ Auth0 Actionsを利用してカスタム実装しつつ、OIDC認証サーバー側へ移行する機能部位については、、、

    ⇒ コードを切り出して、Auth0 Actionsと連携して動くものに改変 ◦ 「Chatwork」側matterとして残す機能部位については、、、 ⇒ OIDCクライアントとして、Callbackエンドポイントにて実現されるように、クラス類を再編成する • つまりは、地道に続くリライティング(再実装)・・・ ◦ 年単位の開発期間の半分は既存コードの再編成に費やしていた 23
  8. なぜ「認可」は扱わないか? • 根本原理の認識: ◦ 「認可」のモデルとはビジネスモデルそのものである ◦ これを無理に統合することはしない • kubellの複数プロダクト展開における状況: ◦

    プロダクトによって、そもそも「契約」が異なる ⇒ Principalを束ねる単位の概念がプロダクトごとに異なる ▪ ビジネスモデル的要請から、各プロダクトの契約は、セールスプロセス上基本的には独立している • 「Chatwork」は、全社導入だったり、部門導入だったり、まちまち • 「フロントデスク」は部門導入前提 • 「プロダクトY」は全社導入前提 ◦ プロダクトによって、権限管理したい対象が異なる ⇒ Resourceの概念がプロダクトごとに異なる ▪ 「Chatwork」は、チャットルームやチーム ▪ 「フロントデスク」は、「案件」 ▪ 「プロダクトY」は、ある種のグループ(「Chatwork」のチャットルームやチームとはまた別のもの) • 結論: ◦ もっぱら、アカウントの本人認証のみを認証基盤の責務とする ▪ 個人としてのPrincipal概念(だけ)を統合、共通化する 27
  9. 認証基盤への三つのミニマム要求 28 • 認証基盤に対する要求纏めに取り掛かるにおいて、ビジネスモデルやプロダクト戦略が変化しても、なにせ複数プロダ クト展開することに違いはない点に注目 • 複数プロダクトを展開する事から、下に示す様な三つのミニマム要求が発せられる、と整理される(た) • これを実現するものとして認証基盤を計画する(した) 顧客ベース

    アカウント ミニマム要求 プロダクト シングル・サイン・ オン 複数プロダクトを シームレスに利用で きる 再度の本人確認(メ アド確認)不要 あるプロダクトに於 いて一度アカウント 登録したら、他のプ ロダクトを利用する 時再度登録しなくて よい 共通ID アカウントの属性や アクティビティを、 プロダクト横断的に 紐づけられる Chatwork フロントデスク プロダクトY プロダクトZ
  10. 参考資料 • 田中 浩一 “ログイン機能をAuth0に移行した話(一人のシニア開発者の目線から)”, kubell Creator’s Note, 2023年 12月13日

    ◦ https://creators-note.chatwork.com/entry/2023/12/13/000000 ◦ 本発表者による社員ブログ • 山下 賢治 “Okta CIC Actionを活用した独自の認証関連機能の移行方法、およびログやメトリクスの監視手法について 実例紹介”, Okta Japan主催 Okta CIC Meetup 登壇資料, 2024年7月11日 ◦ https://speakerdeck.com/kubell_hr/240711-yamashita ◦ 認証グループメンバーによる、Auth0カスタマー対象のMeetup登壇資料 • 平本 康裕 “SaaSの次なる潮流BPaaS ゼロイチの事業づくりと伴走するプロダクト開発の裏側”, Developers Summit 2025 登壇資料, 2025年2月14日 ◦ https://speakerdeck.com/kubell_hr/devsumi2015-hiramoto ◦ BPaaS事業VPoEによるデブサミ登壇資料 • 株式会社kubell "2024年12月期 通期決算説明資料", 2025年2月14日 ◦ https://contents.xj-storage.jp/xcontents/AS04681/13ad73fa/b7cd/4fcd/a681/a6999481ddb8/20250 214193459598s.pdf 31