オープンソースの認証プロバイダー
安全なログインとセッション管理をアプリに追加します。 Node.js、Go、Python、React.js、React Native、Vanilla JS などの一般的な言語およびフロントエンド フレームワークで利用できる SDK。
スーパートークン アーキテクチャは、ユーザーと開発者のエクスペリエンスを損なうことなく、ユーザーに安全な認証を追加するように最適化されています。
SuperTokens アーキテクチャの 3 つの構成要素
- フロントエンド SDK: セッション トークンを管理し、ログイン UI ウィジェットをレンダリングします。
- バックエンド SDK: サインアップ、サインイン、サインアウト、セッション更新などのための API を提供します。フロントエンドはこれらの API と通信します。
- SuperTokens Core: コア認証ロジックとデータベース操作のための HTTP サービス。このサービスはバックエンド SDK によって使用されます
特徴
- パスワードなしのログイン
- ソーシャルログイン
- メールパスワードログイン
- 電話パスワードログイン
- セッション管理
- 多要素認証
- マルチテナンシー/組織サポート (エンタープライズ SSO)
- ユーザーの役割
- マイクロサービス認証
もっと詳しく知る
- スーパートークンとは何ですか?
- 建築
- ☕ なぜ Java なのか?
- ⌨️ ユーザー管理ダッシュボード
- スーパートークンとその他のトークン
- ソースから構築する
- コミュニティ
- ? 貢献しています
- ライセンス
私たちのプロジェクトが気に入ったら、お願いします?このリポジトリ!フィードバックが必要な場合は、お気軽に Discord に参加するか、このリポジトリで問題を作成してください。
スーパートークンとは何ですか?
SuperTokens は、Auth0 や AWS Cognito などの独自のログインプロバイダーに代わるオープンコアの代替手段です。当社は以下を提供するため、他とは異なります。
- オープンソース: スーパートークンは、ユーザー数の制限なく、無料で永久に使用できます。
- オンプレミス展開により、独自のデータベースを使用してユーザー データを 100% 制御できます。
- OAuth プロトコルの複雑さをまったく排除した、ログイン、サインアップ、ユーザーおよびセッションの管理を備えたエンドツーエンドのソリューション。
- 導入が容易で、セキュリティが向上します。
- 拡張性: 誰でも貢献してスーパートークンをより良くすることができます。
哲学
認証は、アプリの UX、開発エクスペリエンス、セキュリティに直接影響します。現在のソリューションでは 3 つの「柱」すべてを最適化することができず、多くのアプリケーションが独自の認証を手動で実行することになると考えています。これはセキュリティ上の問題を引き起こすだけでなく、膨大な時間の浪費にもなります。
私たちはそれを変えたいと考えています。唯一の方法は、適切なレベルの抽象化を備え、最大限の制御が可能で、安全で、使いやすいソリューションを提供することだと信じています。自分で最初から構築する場合と同じように (ただし、学び、構築し、維持するための時間)。
また、当社はベンダーロックインを最小限に抑える原則を信じています。ユーザーのデータを完全に制御できるということは、既存のユーザーにログアウトやパスワードのリセット、最悪の場合は再サインアップを強いることなく、スーパートークンから切り替えることができることを意味します。
デモアプリを見るにはここをクリックしてください。
- 機能のリストについては、当社の Web サイトにアクセスしてください。
- 私たちは機能をできるだけ分離したいと考えています。これは、スーパートークンをログインのみ、セッション管理のみ、あるいはその両方に使用できることを意味します。実際、Auth0 などの他のログイン プロバイダーとのセッション管理統合も提供しています。
ドキュメント
ドキュメントは当社の Web サイトでご覧いただけます。
スーパートークンについての詳細は、GitHub wiki セクションにあります。
建築
ここでアーキテクチャ図を見つけてください
詳細については、GitHub wiki セクションをご覧ください。
☕ なぜ Java なのか?
- ✅ Java を実行するのは難しいように思えるかもしれませんが、配布時にバイナリ/Docker イメージとともに JDK を提供します。これにより、他の HTTP マイクロサービスを実行するのと同じように SuperToken を実行できるようになります。
- ✅ Java には非常に成熟したエコシステムがあります。これは、サードパーティのライブラリが厳しいテストを受けていることを意味します。
- ✅ Java の強力な型システムにより、バグが減り、保守が容易になります。これは、多くの人が同じプロジェクトに取り組むことが予想される場合に特に重要です。
- ✅ 私たちのチームは Java に最も慣れており、優れた Java 開発者を雇用することも比較的簡単です。
- ✅ Java に対する最大の批判の 1 つはメモリ使用量です。これに対する解決策は 3 つあります。
- 最も頻繁に行われる認証関連の操作はセッション検証です。これは Java コアに接続せずにバックエンド SDK (ノード、Python、Go) 内で行われます。したがって、コアの単一インスタンスは、数十、数千のユーザーをかなり簡単に処理できます。
- 私たちは依存関係を慎重に選択しました。たとえば、上位レベルの Web フレームワークの代わりに、組み込みの Tomcat サーバーを使用します。
- 将来的には GraalVM を使用する予定です。これにより、メモリ使用量を 95% 削減できます。
- ✅ 認証 API に変更が必要な場合は、バックエンド SDK レベル (Node、Golang、Python など) で行う必要があります。したがって、このリポジトリ内の Java コードを直接変更したり操作したりする必要はほとんどありません。
⌨️ ユーザー管理ダッシュボード
SuperTokens ユーザー管理ダッシュボードでユーザーを監視する
ユーザーのリストを表示する
アプリケーションにサインアップしたすべてのユーザーをリストします。
ユーザーを管理する
セッション、メタデータ、ロール、アカウント情報を変更または削除してユーザーを管理します。
スーパートークンとその他のトークン
当社ウェブサイトで詳細な比較表をご覧ください。
ソースから構築する
手順については Wiki を参照してください。
コミュニティ
これが将来的に活用できるプロジェクトだと思われる場合は、お願いします。このリポジトリ!
寄稿者 (すべての SuperTokens リポジトリ全体)
リシャブ・ポダール | アドヴァイト・ルイア | ブミル・サルヴァイヤ | ジョエル・コウチーニョ |
ラケッシュUP | ムファシル・カジ | ネミ・シャー | ロヒット・バティア |
マドゥ・マハデヴァン | アイダル・ヌグマノフ | アルナブ・デュワン | NkxxkN |
チャディワラ卿 | ルイス・ソアレス | スディプト・ゴーシュ | ファブリシオ20 |
メタリックモンキー | ヴィディヤンシュ ジャイナ教 | ドメニコ・ルチアーニ | エンツォ・バトロフ |
エロイーズ・イソーティエ | アコス・レッシュ | チョトゥ・チョーダリー | トマーシュ・ホラーチェク |
サム・ボーク | アレクセイ・ティリンダス | ガス・フネ | チェンカイC4 |
マレク・デュロウスキー | ピユシュ・ブトリア | エリック・ドバーティン | カイル・ドッドソン |
ラルフ・ローレンス | クリストファー・カピック | ハンジュスフ | ミハイ・レンギエル |
セリーノ・O・リグトムⅢ世 | ナディラス | ヴァシル・カタナ | ジェイ・ミストリー |
ジェイコブ・マーシャル | ミケトロンバ | オレグ・フドヴェンコ | シッダールタ |
シュアツ | ヨウェイ・ブーン | ロニットパンダ | アヌグラ・シンハル |
ジェレミー・イースタム | アサフ・ヤコビ | サトヴィク・チャクラヴァルティ | オリヴィエ・ピション |
シッダント・ヴァルマ | 仁九 | アイザイア・トマソン | ウツァフ・バーンワル |
サウラブ・ガトネカール | アリシェル・アイトゥアロフ | サイモン・キールバーグ・ウォールストロム | アリーブ・カーン |
ニコラス・ダッドフィールド | Qdea | ルーカス・クヌース | メルビン・ヒルズ |
マット・マレー | クレオ・リバート | ダニイル・ボロボイ | クシシュトフ・ヴィトコフスキ |
レホツキー・ゾルタン | ヴィラージ・カンワデ | アヌラグ・スリヴァスタヴァ |
? 貢献しています
手順については、CONTRIBUTING.md ファイルを参照してください。
ライセンス
© 2020-2023 SuperTokens Inc およびその貢献者。無断転載を禁じます。
このソフトウェアの一部は次のようにライセンス供与されます。
- このリポジトリの「ee/」ディレクトリにあるすべてのコンテンツは、そのディレクトリが存在する場合、「ee/LICENSE.md」で定義されたライセンスに基づいてライセンスされます。
- SuperTokens ソフトウェアに組み込まれているすべてのサードパーティ コンポーネントは、該当するコンポーネントの所有者によって提供される元のライセンスに基づいてライセンス供与されます。
- 上記のディレクトリまたは上記の制限の外にあるコンテンツは、レベル「LICENSE.md」ファイルで定義されている「Apache 2.0」ライセンスの下で利用できます。