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つのコンポーネントで構成されています:
- フロントエンド SDK
ログインUIや認証フロー、セッション管理を担当します。React / Next.js / Angular / Vue.jsなどに対応。 - バックエンド SDK
サインアップ、サインイン、セッション更新などのAPIを提供します。Node.js / Python / Goなどに対応。 - 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は、オープンソースで柔軟に使える認証フレームワークで、マルチテナントやカスタマイズ性の高さが魅力です。
自己ホストもできるので、コストを抑えたい人や、自分たちで細かく制御したいケースにぴったりです。
気になった方は、まずはこの記事で紹介したサンプルアプリを作って、手軽に試してみることをおすすめします。
参考資料
Discussion