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

Chatwork認証基盤移行のリアル 〜IDaaS採用、そして現実解へ〜

Chatwork認証基盤移行のリアル 〜IDaaS採用、そして現実解へ〜

2026年5月20日(水)に実施された「B2B SaaSの認証認可の変遷 - 事業成長が迫る基盤移行のリアル」での発表資料です。
イベントページ:https://findy-tools.connpass.com/event/388589/
登壇者:株式会社kubell 田中 浩一

Avatar for kubell

kubell

May 27, 2026

More Decks by kubell

Other Decks in Technology

Transcript

  1. Introduction • 「Chatwork」は今年15周年を迎えました。 • 当初、「Chatwork」の認証機能は、「Chatwork」本体とモノリシックに一体的でした。 • 2023年頃、認証基盤を「Chatwork」本体から、論理的、かつ物理的に切り離したアーキテクチャーへと移行する大改 修を行いました。この認証基盤の中核は、Auth0というIDaaSによって担われています。 • 本発表では下記の様な内容についてお話します。:

    ◦ なぜそのような大改修を経ての認証基盤の切り出しを実施することとしたのか、そのビジネス的背景や狙い ◦ IDaaS導入や、伴う改修はどのように進められたのか、その過程でどのような問題が生じたか ◦ 結果として、現在の認証基盤のアーキテクチャーはどのようなものとなっているのか 2 https://brand.chatwo rk.com/chatwork-day/
  2. 目次 CONTENTS 01 | Chatwork株式会社から 株式会社kubellへ 02 | IDaaS(Auth0)の導入 04

    | アカウントデータ移行のリアル 05 | 振り返りと概念整理 03 | 移行開発のリアル
  3. 前提知識 • 「IDaaS(”IDentity as a Service”)」とは?: ◦ IDやパスワードを一元集中管理し、ログイン画面を含む認証機能を提供するSaaS ◦ IAM(”Identity

    and Access Management”)機能を提供するSaaS(”IAM as a Service”と言ってもよい) • 「Auth0」とは?: ◦ Okta社によって運営されるIDaaSの一つ • 他に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
  4. IDaaS選定時の比較項目 • パフォーマンス: ◦ 「Chatwork」のMAU推移予測に対して、十分カバーできるパフォーマンスプランを提供している事 • 費用体系: ◦ CIAM目的であり、MAUベースの料金体系である事 •

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

    ◦ モノリシックに作り込まれている「Chatwork」の認証機能部位を、Auth0というOIDC認証サーバー (OpenID Provider)と、「Chatwork」というOIDCクライアント(Relying Party)との構成に分離する こと ▪ Auth0は、そもそもOIDC認証サーバー(OpenID Provider)である ▪ 「Chatwork」を、OIDCクライアント(Relying Party)として振る舞うよう改修する 17
  6. Auth0を前提とした認証機能部位リプレース開発計画 (2 of 2) 18 • 移行開発進め方のねらい: ◦ 「Chatwork」の認証機能が、OIDC認証サーバーとOIDCクラアイントに分離されれば、自ずと、「Chatwork」 以外のOIDCクライアントへの認証提供も可能となる

    Chatwork Chatwork (OIDCクライアント) Auth0 (OIDC認証サーバー) アカウント アカウント Chatwork (OIDCクライアント) BPaaS窓口 アプリ (OIDCクライアント) AIエージェント アプリ (OIDCクライアント) アカウント 認証基盤 (OIDC認証サーバー)
  7. “認証要素”を移行計画に応じて分類する A. そのままAuth0提供機能を利用する ✓ (将来の)認証基盤として、「Chatwork」以外のプロダクトへも提供したいもの ✓ かつ、Auth0にそのまま置き換え可能な機能が有る B. Auth0 Actionsを利用して、カスタム実装する

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

    ⇒ Auth0へ移行するので、既存コードは破棄する • 2段階認証, 休眠アカウント・メール認証, ... ✓ Auth0 Actionsを利用してカスタム実装しつつ、OIDC認証サーバー側へ移行 ⇒ コードを切り出して、Auth0 Actionsと連携して動くものに改変する • アカウント停止, 組織間移行中, ... ✓ 「Chatwork」側の責務として残す ⇒ OIDCクライアントとして、Callbackエンドポイントにて実現されるように、コードを再編成する 22
  9. ”認証要素” As-Is (再掲) 23 パスワード認証 SAML認証 Google認証 Apple認証 2段階認証 休眠アカウント

    メール認証 アカウント停止 組織間移行中 アカウントロック Chatwork www.chatwork.com
  10. ・・・と、さらっと言ってますが、 • 実際の移行開発は、 ◦ Auth0提供の相当機能をそのまま利用する機能部位については、、、 ⇒ 既存コードは破棄! ◦ Auth0 Actionsを利用してカスタム実装しつつ、OIDC認証サーバー側へ移行する機能部位については、、、

    ⇒ コードを切り出して、Auth0 Actionsと連携して動くものに改変 ◦ 「Chatwork」側matterとして残す機能部位については、、、 ⇒ OIDCクライアントとして、Callbackエンドポイントにて実現されるように、クラス類を再編成する • つまりは、地道に続くリライティング(再実装)・・・ ◦ 年単位の開発期間の半分は既存コードの再編成に費やしていた 25
  11. 事前一括移行 vs Auth0 Automatic Migration 27 • 事前一括移行のConsが目立った ◦ 事前一括移行バッチの実行時間が、相当程度になると見積もられた

    ▪ 400万以上(当時)の登録アカウントというデータ量 ⇒ 秒間100件移行できたとして、11時間 ▪ Auth0 APIのレスポンスタイムやRate Limitの制約 ⇒ 実際には、1週間程度と見積もられた ◦ 移行バッチ実行中、サービス停止か、少なくともなんらか縮退運用が避けられない • Auth0のAutomatic Migrationを利用することで、このConsを避けられる
  12. Auth0 Automatic Migration 28 See: https://auth0.com/blog/how-to-migrate-users-to-auth0-a-technic al-guide/#Automatic-User-Migration--Trickle-Lazy-Migration- ログイン →Auth0ユーザーDBに既に存在しているかチェッ  ク

    →存在していたら認証PASS →存在していなかったら、カスタムの既存DB検証  スクリプトを実行 →OKだったら、Auth0ユーザーDBに登録&認証  PASS
  13. 振り返り 34 1. kubellは、ビジネスチャット事業に加えて、BPaaS事業に取り組み始めた 2. システム的には、「Chatwork」以外に複数プロダクト展開されることを意味する 3. 複数プロダクトへ認証提供するための、認証基盤が必要 4. まずは既存の「Chatwork」の認証機能部位をAuth0前提でリプレースする、というゴール設定で移行開発

    Chatwork Chatwork (OIDCクライアント) Auth0 (OIDC認証サーバー) アカウント アカウント Chatwork (OIDCクライアント) BPaaS窓口 アプリ (OIDCクライアント) AIエージェント アプリ (OIDCクライアント) アカウント 認証基盤 (OIDC認証サーバー)
  14. 概念整理 (1): 認証基盤への三つのミニマム要求 35 • 認証基盤に対する要求纏めに取り掛かるにおいて、ビジネスモデルやプロダクト戦略が変化しても、なにせ複数プロダ クト展開することに違いはない点に注目 • 複数プロダクトを展開する事から、下に示す様な三つのミニマム要求が発せられる、と整理した •

    これを実現するものとして認証基盤を計画した 顧客ベース アカウント ミニマム要求 プロダクト シングル・サイン・ オン 複数プロダクトを シームレスに利用で きる 再度の本人確認(メ アド確認)不要 あるプロダクトに於 いて一度アカウント 登録したら、他のプ ロダクトを利用する 時再度登録しなくて よい 共通ID アカウントの属性や アクティビティを、 プロダクト横断的に 紐づけられる Chatwork BPaaS窓口 アプリ AIエージェント アプリ その他の プロダクト
  15. 概念整理 (2): 認証要素、何を認証基盤へ持っていき、何を残したか • 認証基盤へ持っていった認証要素: ✓ 認証基盤として、「Chatwork」以外の全てのプロダクトへ共通して提供したいもの ➢ 結論として、純粋に認証のみを、認証基盤の責務とした •

    「Chatwork」に残した認証要素: ✓ 「Chatwork」というプロダクト固有の機能だと判断されるもの ➢ プロダクト固有の問題は、プロダクト固有の認可の問題であると、えいっと割り切り 36
  16. 概念整理 (3): なぜ「認可」は扱わないか? • 根本原理の認識: ◦ 「認可」のモデルとはビジネスモデルそのものである ◦ これを無理に統合することはしない •

    kubellの複数プロダクト展開における状況: ◦ プロダクトによって、そもそも「契約」が異なる ⇒ Principalを束ねる単位の概念がプロダクトごとに異なる ▪ ビジネスモデル的要請から、各プロダクトの契約は、セールスプロセス上基本的には独立している • 「Chatwork」は、ビジネスチャット事業として展開 • 「BPaaS窓口アプリ」は、BPaaS事業として展開 ◦ プロダクトによって、権限管理したい対象が異なる ⇒ Resourceの概念がプロダクトごとに異なる ▪ 「Chatwork」は、チャットルームやチーム ▪ 「BPaaS窓口アプリ」は、「案件」 • 結論: ◦ もっぱら、アカウントの本人認証のみを認証基盤の責務とする ▪ 個人としてのPrincipal概念(だけ)を統合、共通化する 37
  17. 参考資料 ▪ 田中 浩一 “ログイン機能をAuth0に移行した話(一人のシニア開発者の目線から)”, kubell Creator’s Note, 2023年12月13日 https://creators-note.chatwork.com/entry/2023/12/13/000000

    ※ 本発表者による社員ブログ ▪ 田中 浩一 “Auth0 by Okta導入で、認証時セキュリティは専門IDaaSにお任せ、プロダクト間SSOはほぼ開発レスで実現”, Findy Tools, 2024年5月31日 https://findy-tools.io/products/auth0/35/94 ※ 本発表者によるFindy Toolsへの寄稿 ▪ 山下 賢治 “Okta CIC Actionを活用した独自の認証関連機能の移行方法、およびログやメトリクスの監視手法について実例紹介”, Okta Japan主催 Okta CIC Meetup 登壇資料, 2024年7月11日 https://speakerdeck.com/kubell_hr/240711-yamashita ※ 認証チームメンバー(当時)による、Auth0カスタマー対象のMeetup登壇資料 ▪ 株式会社kubell "2026年12月期 第1四半期 決算説明資料", 2026年5月15日 https://contents.xj-storage.jp/xcontents/AS04681/b9a347cc/7546/4772/a5e5/c1ae294893f4/14012026051553767 4.pdf ▪ 株式会社kubell "2025年12月期 通期 決算説明資料", 2026年2月13日 https://contents.xj-storage.jp/xcontents/AS04681/1d0588db/8ad0/4469/9b7c/ac08a4da8042/14012026021356137 8.pdf 39