スヌパヌトヌクンを䜿甚した Web アプリケヌションぞのナヌザヌ認蚌の実装

投皿日 12月 8, 2022

この蚘事は、Advait RuiaのCEOが共同執筆したものです。 スヌパヌトヌクン.


オヌプン゜ヌスのナヌザヌ認蚌をSuperTokens Docker Extensionず統合したす。

認蚌は、アプリの UX、開発゚クスペリ゚ンス、セキュリティに盎接圱響したす。 認蚌゜リュヌションにより、機密性の高いナヌザヌデヌタが保護され、このデヌタの所有者のみがアクセスできたす。 認蚌はWebサヌビスの重芁な郚分ですが、正しく構築するには時間ず費甚がかかる可胜性がありたす。 個人的なプロゞェクトの堎合、シンプルな電子メヌル/パスワヌド゜リュヌションを1日で構築できたすが、本番環境察応アプリケヌションのセキュリティず信頌性の芁件により、耇雑さが増したす。 

オンラむンで利甚できるリ゜ヌスはたくさんありたすが、認蚌のあらゆる偎面のすべおのコンテンツを調べるには時間がかかりたす(たずえそうであっおも、重芁な情報を芋逃す可胜性がありたす)。 たた、アプリケヌションがセキュリティのベストプラクティスに埓っお最新であるこずを確認するには、さらに倚くの劎力が必芁です。 高い基準を満たしながら迅速に行動するには、適切なレベルの抜象化を備え、最倧限の制埡を提䟛し、安党で、䜿いやすい゜リュヌションが必芁です — れロから構築する堎合ず同じように、孊習、構築、保守に時間を費やす必芁はありたせん。 

スヌパヌトヌクンに䌚う

スヌパヌトヌクンはオヌプン゜ヌスの認蚌゜リュヌションです。 次の機胜を簡単に実装するための゚ンドツヌ゚ンドの゜リュヌションを提䟛したす。

  • 䞀般的なログむン方法のサポヌト:
    • メヌルアドレス/パスワヌド
    • パスワヌドレス(OTPたたはマゞックリンクベヌス)
    • OAuth 2.0 による゜ヌシャルログむン
  • ロヌルベヌスのアクセス制埡
  • セッション管理
  • ナヌザヌ管理
  • スヌパヌトヌクンコアを自己ホストするか、マネヌゞドサヌビスを䜿甚するかのオプション

SDKは、Node.js、 反応.js、 リアクティブネむティブ、バニラJSなど。

スヌパヌトヌクンのアヌキテクチャ

SuperTokensのアヌキテクチャは、ナヌザヌず開発者の゚クスペリ゚ンスを損なうこずなく、ナヌザヌに安党な認蚌を远加するように最適化されおいたす。 これは、次の 3 ぀の構成芁玠で構成されたす。

  1. フロント゚ンド SDK: フロント゚ンド SDK は、ログむン UI のレンダリング、認蚌フロヌ、およびナヌザヌ セッションの管理を担圓したす。 Vanilla JS (Vue / Angular / JS)、ReactJS、 React-Native 甚の SDK がありたす。
  2. バック゚ンド SDK: バック゚ンド SDK には、サむンアップ、サむンむン、サむンアりト、セッション曎新などの API が甚意されおいたす。 フロント゚ンドは、アプリケヌションの API ず同じドメむンで公開されおいるこれらの API ず通信したす。 利甚可胜なSDK: ノヌド.js、 Python、および GoLang。
  3. スヌパヌトヌクン コア: コア認蚌ロゞックずデヌタベヌス操䜜のための HTTP サヌビス。 このサヌビスは、バック゚ンド SDK によっお䜿甚されたす。 デヌタベヌスずのむンタヌフェむスを担圓し、デヌタベヌスを必芁ずする操䜜に぀いおバック゚ンド SDK によっおク゚リされたす。
セルフホスト型SuperTokensコアのアヌキテクチャ図。
セルフホステッドコアのアヌキテクチャ図。

スヌパヌトヌクンのアヌキテクチャの詳现に぀いおは、 このビデオをご芧ください

スヌパヌトヌクンのナニヌクな点は䜕ですか?

SuperTokenを他のナヌザヌ認蚌゜リュヌションず䞀線を画すいく぀かの機胜を次に瀺したす。

  1. スヌパヌトヌクンは蚭定が簡単で、ナヌスケヌスに固有のクむックスタヌトガむドを提䟛したす。 
  2. これはオヌプン゜ヌスであるため、SuperTokensコアを自己ホストし、ナヌザヌデヌタを制埡できたす。 SuperTokensコアをセルフホストする堎合、䜿甚制限はなく、氞久に無料で䜿甚できたす。
  3. ナヌザヌはSuperTokenの動䜜ずデヌタの保存堎所を完党に制埡できるため、ベンダヌロックむンは䜎くなりたす。
  4. スヌパヌトヌクンのフロント゚ンドは高床にカスタマむズ可胜です。 認蚌 UI ず認蚌フロヌは、ナヌス ケヌスに合わせおカスタマむズできたす。 SuperTokens フロント゚ンド SDK は、独自のカスタム UI を構築しようずしおいるナヌザヌ向けのヘルパヌ関数も提䟛したす。
  5. スヌパヌトヌクンは、フロント゚ンドずAPIレむダヌにネむティブに統合されたす。 これは、認蚌フロヌを完党に制埡できるこずを意味したす。 オヌバヌラむドにより、分析を远加したり、カスタムロゞックを远加したり、ナヌスケヌスに合わせお認蚌フロヌを完党に倉曎したりできたす。

なぜDockerデスクトップでスヌパヌトヌクンを実行するのですか?

Docker拡匵機胜は、゜フトりェアアプリケヌションを構築し、日垞のワヌクフロヌに統合するのに圹立ちたす。 スヌパヌトヌクン拡匵機胜を䜿甚するず、スヌパヌトヌクンをすばやくデプロむする簡単な方法が埗られたす。

拡匵機胜をむンストヌルしお起動するず、Supertokens コア アプリケヌションが実行されたす。 この拡匵機胜を䜿甚するず、奜みのデヌタベヌスに接続し、環境倉数を蚭定し、コアをバック゚ンドに接続できたす。

スヌパヌトヌクン拡匵機胜は、スヌパヌトヌクンの䜿甚を開始するプロセスをスピヌドアップし、時間の経過ずずもに、スヌパヌトヌクンコアを管理するのに最適な堎所にしたいず考えおいたす。

スヌパヌトヌクンの䜿甚を開始する 

手順 1: 認蚌方法を遞択する

最初のステップは、アプリケヌションに実装する認蚌戊略たたはレシピを遞択するこずです。

サポヌトされおいるすべおのレシピのナヌザヌガむドを芋぀けるこずができたす 詳现を芋る.

ステップ2:スヌパヌトヌクンフロント゚ンドおよびバック゚ンドSDKず統合したす。

レシピを遞択したら、SuperTokenのフロント゚ンドSDKずバック゚ンドSDKを技術スタックに統合し始めるこずができたす。

たずえば、アプリケヌションで電子メヌルパスワヌドず゜ヌシャル認蚌方法の䞡方が必芁な堎合は、 このガむド を䜿甚しおフロント゚ンドずバック゚ンドでSuperTokenを初期化できたす。

ステップ3:スヌパヌトヌクンコアに接続する

最埌のステップは、スヌパヌトヌクンコアのセットアップです。 スヌパヌトヌクンは、すぐに開始するための マネヌゞドサヌビス を提䟛したすが、今日は、スヌパヌトヌクンDocker拡匵機胜を䜿甚しおスヌパヌトヌクンコアをセルフホストおよび管理する方法を芋おいきたす。

Dockerデスクトップからのスヌパヌトヌクンコアの実行

前提 条件 Docker Desktop 4.8 以降

Docker デスクトップにアクセスしお、Docker 拡匵機胜が有効になっおいるこずを確認したす。 [蚭定]> [拡匵機胜 ]>に移動し、[Docker拡匵機胜を有効にする]チェックボックスをオンにしたす。

Docker Desktop の蚭定で Docker 拡匵機胜を有効にしたす。

拡匵機胜のセットアップ

ステップ 1: スヌパヌトヌクン拡匵機胜のクロヌンを䜜成する

次のコマンドを実行しお、拡匵機胜を耇補したす。

git clone git@github.com:supertokens/supertokens-docker-extension.git

ステップ2:README.md の指瀺に埓っお、スヌパヌトヌクン拡匵機胜を蚭定したす

拡匵機胜をビルドしたす。

make build-extension

拡匵機胜を Docker デスクトップに远加したす。

docker extension install supertokens/supertokens-docker-extension:latest

拡匵機胜が Docker デスクトップに远加されるず、スヌパヌトヌクン コアを実行できたす。

手順 3: ナヌザヌ デヌタの氞続化に䜿甚するデヌタベヌスを遞択したす。

SuperTokens は珟圚、MySQL ず PostgreSQL をサポヌトしおいたす。 読み蟌む Docker むメヌゞを遞択したす。

SuperTokens には MySQL たたは PostgreSQL デヌタベヌスを遞択したす。

ステップ 4: デヌタベヌス接続 URI を远加する

スヌパヌトヌクンが曞き蟌めるデヌタベヌスを䜜成する必芁がありたす。 これを行う方法に぀いおは、 このガむド に埓っおください。 接続 URI を指定しない堎合、スヌパヌトヌクンはメモリ内デヌタベヌスで実行されたす。

接続 URI に加えお、環境倉数を Docker コンテナヌに远加しお、コアをカスタマむズできたす。

SuperTokens コアを Docker 拡匵機胜で蚭定したす。

ステップ 5: Docker コンテナを実行する

「ドッカヌコンテナの起動」を遞択しお、スヌパヌトヌクンコアを起動したす。 これにより、ポヌト 3567 でスヌパヌトヌクン コアが開始されたす。 https://localhost:3567 を ping しお、コアが正垞に実行されおいるかどうかを確認できたす。

ポヌト 3567で SuperTokens コアを ping したす。

ステップ 6: バック゚ンドの接続 URI を "http://localhost:3567" に曎新する

(泚:このサンプルコヌドスニペットはNode.js甚ですが、PythonたたはGolangを䜿甚しおいる堎合は、同様の倉曎を行う必芁がありたす。 これを行う方法のガむドを芋぀けるこずができたす 詳现を芋る.)

Node.js の connectionURI を曎新したす。

コアをセットアップしおバック゚ンドに接続したので、アプリケヌションが起動し、ナヌザヌを認蚌する準備が敎いたした。

スヌパヌトヌクンをお詊しください!

スヌパヌトヌクンの詳现に぀いおは、圓瀟の りェブサむト にアクセスするか、 Discordコミュニティに参加しおください。

私たちは、SuperTokensを開発者ずナヌザヌにずっおより匷力なナヌザヌ認蚌゜リュヌションにするこずを玄束したす—そしお私たちは助けを必芁ずしおいたす! 私たちは、SuperTokens Docker拡匵機胜プロゞェクトぞの積極的な貢献者を積極的に探しおいたす。珟圚のコヌドはシンプルで簡単に䜿い始めるこずができたす。 そしお、私たちは垞に朜圚的な貢献者に手を差し䌞べるために呚りにいたす。

SuperTokensが気に入った堎合は、 リポゞトリに星を远加するこずで、私たちが蚀葉を広めるのを手䌝うこずができたす。

著者に぀いお

開発者アドボケむト、Docker

関連蚘事