🔐

SuperTokensとは?マルチテナント認証を初心者向けに解説してみた

に公開

はじめに

現代のWebアプリケーションでは、認証は欠かせない要素です。ユーザーの安全を守り、個別の体験を提供するために、堅牢で拡張性のある認証システムが求められています。

ウェブサイトにログイン機能を実装できる代表的な認証サービスとしてはAuth0やAmazon Cognitoなどがありますが、いずれもオープンソースではありません。そこで、これらのオープンソース代替として開発されたのが「SuperTokens」です。

この記事では、認証フレームワークSuperTokensの特徴や「マルチテナント」についてわかりやすく解説します。あわせて、SuperTokensの簡単な実装例も紹介します。

SuperTokensの基本概念と特徴

SuperTokensは、オープンソースで提供されている認証フレームワークであり、以下のような特徴があります:

  • オープンソースでカスタマイズ可能

  • 自己ホスト型とSaaS型の両方に対応

  • Email/Password、OAuth(Google, GitHubなど)、パスワードレスログイン対応

  • フロントエンド/バックエンド両方のSDKが用意されている

  • セッション管理をフルコントロール(セキュアなCookieベース、JWTベース)

  • シングルサインオン(SSO)やマルチテナントにも対応可能

マルチテナントとは何か

テナント(tenant)とは、本来不動産を借り受ける賃借人のことですが、IT分野ではシステムやサービスを利用する際のユーザーの契約単位を指します。そして、マルチテナント(multitenant)とは、1つのシステムやサービスを複数の組織(テナント)が共有して利用する方式です。

例:

ある勤怠管理アプリを、株式会社A・B・Cが利用しているとします。
それぞれの会社に対して、

  • 独立したログイン画面やログイン方法
  • 独立したユーザーデータと管理者設定

を提供したい場合、マルチテナント対応の認証が必要です。

SuperTokensのマルチテナント対応

SuperTokensでは、各ユーザーに対して tenantId を指定することで、

  • テナントごとのカスタム設定(認証ルールやUIのカスタマイズ)

  • ユーザープールの分離(論理・物理どちらも対応)

  • 完全自動化されたテナント作成(テナントの作成と設定はすべてAPI駆動で行われる)

が可能になります。マルチテナント型SaaSの構築において、SuperTokensは柔軟で拡張性の高い選択肢です。

従来の認証方法との比較

特徴 SuperTokens 従来の認証サービス(Auth0など)
オープンソース はい いいえ
自己ホスト 可能 難しい/不可
費用 自己ホストなら無料/クラウドでも安価 無料プランの制限が厳しく、有料プランで高額になる可能性があり
UI・バックエンドのカスタマイズのしやすさ 容易 難しい
セットアップのしやすさ やや難(技術スキルが必要) 容易(すぐに使えるGUIベース)
Cookieベースセッション管理(Out of the box) 可能 難しい/不可
サービス提供会社の規模 スタートアップ(軽量・柔軟) エンタープライズ(大規模向け)

SuperTokensを選ぶメリット・デメリット

メリット

  • オープンソースで柔軟:自己ホストまたはマネージドが選べ、データや認証ロジックを完全に制御可能

  • モジュール式設計:必要な機能だけを選択でき、シンプルに運用可能

  • 高いカスタマイズ性:バックエンドAPIやUIの上書きも容易

  • スケーラブル:自己ホストなら自由に最適化、クラウド版も効率よくスケール

  • ベンダーロックインなし:いつでも別環境へ移行可能

  • コスト効率が高い:自己ホストならユーザー数に関係なく無料で利用可

デメリット

  • 技術的な知識が必要:特に自己ホスト時はセットアップや保守にエンジニアが必要

  • インフラ管理が必要:ホスティングやセキュリティ対策も自前

  • 機能が限定的:Auth0のような高度な企業向け機能は一部不足・別途構築が必要な場合あり

簡単な実装例

SuperTokensの構成

実装例に入る前に、SuperTokensの構成を簡単に紹介します。
SuperTokensは以下の3つのコンポーネントで構成されています:

  1. フロントエンド SDK
    
ログインUIや認証フロー、セッション管理を担当します。React / Next.js / Angular / Vue.jsなどに対応。
  2. バックエンド SDK
    サインアップ、サインイン、セッション更新などのAPIを提供します。Node.js / Python / Goなどに対応。
  3. SuperTokens Core
    
認証ロジックとデータベース操作を担うHTTPサービス。SuperTokensでは、フロントエンドSDKが直接Coreに通信せず、まずはバックエンドにリクエストを送り、そこからCoreと連携する設計になっています(下図参照)。


※詳しくは 公式ドキュメント を参照

まずは触ってみたい人向け:SuperTokensサンプルアプリを作成

SuperTokensの動作を手軽に確認してみたい方のために、公式が提供しているCLIを使ってサンプルアプリを作成してみましょう。
以下のコマンドを実行します:

npx create-supertokens-app@latest

すると、以下のような質問が順番に表示されます。


➡ アプリの名前を指定します。ここでは example-app と入力します。



➡ 使用するフロントエンドのフレームワークを選びます。ここでは React を選択します。



➡ バックエンドの言語を選びます。ここでは Node.js を選びます。



➡ Node.jsの中で使いたいフレームワークを選びます。ここでは Express.js を選択します。



➡ 使いたい認証方法を選びます。ここでは基本の Email Password を選びます。


上記の選択が終わると、自動でプロジェクトのファイル構成と依存関係が整います。最後に表示される以下のコマンドでアプリを起動できます:

cd example-app
npm run start

その後、ブラウザで http://localhost:3000/auth を開けば、SuperTokensのログイン画面が表示されます!

補足:プロジェクト構成を見てみよう
作成されたプロジェクトを開くと、backend と frontend フォルダがすでに用意されています。コードを見ながら動かすことで、SuperTokensの仕組みが自然と理解できてくると思います。

まとめ

SuperTokensは、オープンソースで柔軟に使える認証フレームワークで、マルチテナントやカスタマイズ性の高さが魅力です。
自己ホストもできるので、コストを抑えたい人や、自分たちで細かく制御したいケースにぴったりです。
気になった方は、まずはこの記事で紹介したサンプルアプリを作って、手軽に試してみることをおすすめします。

参考資料

https://supertokens.com/docs
https://supertokens.com/docs/quickstart/example-apps/generate-example-app

Emoba Tech Blog

Discussion