supertokens-core
Open source alternative to Auth0 / Firebase Auth / AWS Cognito
アプリやサービスに必要なログイン機能・ユーザー管理機能を、自社のサーバーで安全に運用できる無料の認証基盤(ログインの仕組み)ソフトウェアです。
・企業:社内システムや顧客向けサービスのログイン機能を自社管理したい場合に、ユーザーデータを外部に預けることなく自社のデータベースで完結でき、情報漏えいリスクや規制対応の不安を軽減できます。 ・スタートアップ:新サービスの立ち上げ時にログイン画面やユーザー管理の仕組みをゼロから開発する手間を省け、パスワードレスログインやSNSアカウントでのログインなどを素早く導入してプロダクト開発に集中できます。 ・個人事業主・フリーランス:クライアントのウェブサービスや自社サービスに会員機能を追加する際、ユーザー数に関係なく無料で使い続けられるため、コストを抑えながら本格的なログイン機能を提供できます。
Auth0やAWS Cognitoといった有料の認証サービスと異なり、ユーザーデータをすべて自社のサーバーで管理でき、ユーザー数の上限なく永久無料で利用できます。また、将来的に別のサービスへ乗り換える際も、ユーザーにパスワードの再設定などを強いることなくスムーズに移行できる設計になっています。
オープンソース認証プロバイダ
アプリに安全なログインとセッション管理を追加しましょう。人気の言語やフロントエンドフレームワーク向けのSDKが利用可能です(Node.js、Go、Python、React.js、React Native、Vanilla JSなど)。
SuperTokensのアーキテクチャは、ユーザーエクスペリエンスと開発者エクスペリエンスを損なうことなく、ユーザーに安全な認証を追加するために最適化されています。
SuperTokensアーキテクチャの3つの構成要素
- フロントエンドSDK:セッショントークンの管理とログインUIウィジェットのレンダリング
- バックエンドSDK:サインアップ、サインイン、サインアウト、セッション更新などのAPIを提供。フロントエンドはこれらのAPIと通信します
- SuperTokens Core:認証コアロジックとデータベース操作のためのHTTPサービス。このサービスはバックエンドSDKによって使用されます
機能
- パスワードレスログイン
- ソーシャルログイン
- メールパスワードログイン
- 電話番号パスワードログイン
- セッション管理
- 多要素認証
- マルチテナント / 組織対応(エンタープライズSSO)
- ユーザーロール
- マイクロサービス認証
詳細
- 🚀 SuperTokensとは?
- 🏗️ アーキテクチャ
- ☕ なぜJavaなのか?
- ⌨️ ユーザー管理ダッシュボード
- 🔥 SuperTokens vs 他の選択肢
- 🛠️ ソースからのビルド
- 👥 コミュニティ
- 👩💻 コントリビュート
- 📝 ライセンス
プロジェクトを気に入っていただけたら、このリポジトリに :star2: をお願いします!フィードバックはDiscordに参加するか、このリポジトリでIssueを作成してください
🚀 SuperTokensとは?
SuperTokensはAuth0やAWS Cognitoなどのプロプライエタリなログインプロバイダに対するオープンコアの代替です。私たちが異なる点は以下の通りです:
- オープンソース:SuperTokensはユーザー数の制限なく、永久に無料で使用できます。
- オンプレミスデプロイにより、自分のデータベースを使用して、ユーザーデータの100%を自分でコントロールできます。
- OAuthプロトコルの複雑さなしに、ログイン、サインアップ、ユーザー・セッション管理を網羅するエンドツーエンドソリューション。
- 実装の容易さとより高いセキュリティ。
- 拡張性:誰でもコントリビュートしてSuperTokensをより良くできます!
フィロソフィー
認証はあらゆるアプリのUX、開発者エクスペリエンス、セキュリティに直接影響します。現在のソリューションはこれら3つの「柱」すべてを最適化できていないため、多くのアプリケーションが独自の認証を自作しています。これはセキュリティの問題につながるだけでなく、膨大な時間の浪費でもあります。
私たちはこれを変えたいと考えています。適切な抽象化レベルで最大限のコントロールを提供し、安全で、使いやすいソリューション — まるで自分でゼロからビルドしたかのような(学習、構築、メンテナンスの時間を除いた)ソリューションを提供することが唯一の方法だと信じています。
また、ベンダーロックインを最小限にするという原則も信じています。ユーザーデータを完全にコントロールできることは、既存のユーザーにログアウト、パスワードリセット、最悪の場合の再サインアップを強制することなく、SuperTokensから乗り換えられることを意味します。
こちらをクリックしてデモアプリをご覧ください。
- 機能一覧はウェブサイトをご覧ください。
- 機能をできるだけ分離して提供したいと考えています。つまり、SuperTokensをログインのみ、セッション管理のみ、または両方に使用できます。実際に、Auth0などの他のログインプロバイダとのセッション管理統合も提供しています。
ドキュメント
ドキュメントはウェブサイトでご覧いただけます。
SuperTokensの詳細情報はGitHub wikiセクションをご覧ください。
🏗️ アーキテクチャ
アーキテクチャ図はこちらをご覧ください。
詳細については、GitHub wikiセクションをご覧ください。
☕ なぜJavaなのか?
- ✅ Javaの実行は難しく見えるかもしれませんが、配布時にバイナリ/Dockerイメージと一緒にJDKを提供しています。これにより、SuperTokensの実行は他のHTTPマイクロサービスの実行と同じくらい簡単になります。
- ✅ Javaには非常に成熟したエコシステムがあります。これは、サードパーティライブラリが十分に実戦テスト済みであることを意味します。
- ✅ Javaの強い型システムにより、バグが少なく、メンテナンスが容易になります。これは、多くの人が同じプロジェクトに取り組むことが想定される場合に特に重要です。
- ✅ 私たちのチームはJavaに最も精通しており、優秀なJava開発者の採用も比較的容易です。
- ✅ Javaに対する最大の批判の一つはメモリ使用量です。これに対する3つの解決策があります:
- 最も頻繁な認証関連操作はセッション検証です。これはバックエンドSDK(Node、Python、Go)内で、Javaコアに接続することなく行われます。そのため、コアの単一インスタンスで数万のユーザーをかなり容易に処理できます。
- 依存関係を慎重に選定しています。例えば、高レベルのWebフレームワークではなく、組み込みTomcatサーバーを使用しています。
- 将来的にはGraalVMの使用も計画しており、これによりメモリ使用量を95%削減できる可能性があります!
- ✅ 認証APIの変更が必要な場合、それらはバックエンドSDKレベル(例:Node、Golang、Python)で行う必要があります。そのため、このリポジトリのJavaコードを直接変更/操作する必要はほとんどありません。
⌨️ ユーザー管理ダッシュボード
SuperTokensユーザー管理ダッシュボードでユーザーを管理できます。
ユーザー一覧
アプリケーションにサインアップしたすべてのユーザーを一覧表示します。

ユーザー管理
セッション、メタデータ、ロール、アカウント情報を変更・削除してユーザーを管理します。

🔥 SuperTokens vs 他の選択肢
詳細な比較チャートはウェブサイトをご覧ください。
🛠️ ソースからのビルド
手順はwikiをご覧ください。
👥 コミュニティ
将来使えるプロジェクトだと思われたら、このリポジトリに :star2: をお願いします!
コントリビューター(全SuperTokensリポジトリ横断)
👩💻 コントリビュート
手順についてはCONTRIBUTING.mdファイルをご覧ください。
📝 ライセンス
© 2020-2023 SuperTokens Inc およびコントリビューター。全権利保有。
このソフトウェアの一部は以下のようにライセンスされています:
- このリポジトリの「ee/」ディレクトリ配下に存在するすべてのコンテンツ(そのディレクトリが存在する場合)は、「ee/LICENSE.md」で定義されたライセンスの下にライセンスされています。
- SuperTokensソフトウェアに組み込まれたすべてのサードパーティコンポーネントは、該当するコンポーネントの所有者が提供する元のライセンスの下にライセンスされています。
- 上記のディレクトリまたは制限の範囲外のコンテンツは、レベル「LICENSE.md」ファイルで定義された「Apache 2.0」ライセンスの下で利用可能です。

