開示:私はAuth0のエンジニアです。
それは1つの主要なポイントに依存します...次の場合に決定する必要があります。
- 独自のIDプロバイダーと承認サーバーの構築や保守にかなりの時間を直接費やしたい(そして間接的にお金を費やしたい)
- または、直接お金を使い、Auth0のようなサードパーティの認証プロバイダーを使用することを好みます。
両方のオプションは、機能要件の観点から完全に実行可能です。カスタム開発では、サポートすることに決めた機能を完全に制御できるので、回答の一部を、リストした要件にAuth0がどのように応答できるかに焦点を当てます。
ただし、それに入る前に、決定に関係なく、認証ではOAuth2ではなくOpenID Connectに焦点を当てる必要があります。モノリスを別々のWebアプリケーションに分割するだけでなく、APIも混在させることを計画している場合は、後者がより適切です。
既存のユーザーをAuth0ベースのシステムに移行する方法は?
データベースの使用を継続し、Auth0に依存して、使用する必要がある認証関連プロトコルへのすべてのコンプライアンスを提供するか、ユーザーをAuth0管理対象データベースに移行して、パスワードを保存および検証する方法について心配する必要をなくすことができます。
データベースを引き続き使用する場合は、「カスタムデータベースを使用してユーザー名とパスワードでユーザーを認証する」を参照してください
アプリケーションは認証のためにユーザーデータベースに依存することがよくあります。Auth0を使用すると、これらのリポジトリに簡単に接続し、それらをIDプロバイダーとして使用しながら、ユーザーの資格情報を保持し、多くの追加機能を提供できます。
(ドキュメントでは、例としてMySQLを参照していますが、他のデータベースエンジンもサポートされています)
一方、Auth0へのユーザーの移行で説明されている移行プロセスを活用することで、ユーザー認証情報をAuth0データベースにシームレスに移動できます。
Auth0は、カスタムデータベース接続からAuth0へのユーザーの自動移行をサポートしています。この機能は、ユーザーがログインするたびに一度に1つずつAuth0データベースにユーザーを追加し、ユーザーにすべてのパスワードを同時にリセットするように求めることを回避します。
すべてのユーザーが一度にパスワードハッシュアルゴリズムの使用を開始することを希望する場合は、Management APIを介してAuth0ですべてのユーザーを作成することもできます。これには、ユーザーにパスワードのリセットを要求するという副作用があります。
カスタムの2段階認証(確認用の質問)を使い続けるには?
Auth0が提供する認証パイプラインは、ルールを使用して完全にカスタマイズできます。つまり、プロトコルに関連するものを実装する必要はありませんでしたが、アプリケーションで認証がどのように行われるかを細かく調整することができます。
これには、ユーザーがAuth0によって検証された初期パスワードを提供し、カスタムルールから詳細情報を要求する2段階認証プロセスを実行する方法として、既存の検証質問を引き続き使用する可能性が含まれます。(ルールは単なるJavaScriptなので、可能性は無限です)
ただし、検証の質問を破棄し、代わりに認証プロセスのセキュリティを強化する方法としてAuth0 Guardianを使用することもできます。
認証UIのルックアンドフィールをカスタマイズする方法は?
Auth0を使用すると、デフォルトのログインページやLockなどの認証ウィジェットを活用して、クリーンな認証UIをすぐに利用できます。これらはすべてある程度のカスタマイズをサポートしており、いつでも独自のUIを自分で作成する代わりに、ユーザーインターフェイスに制約を課さない低レベルのAuth0ライブラリ(Auth0.js)を利用できます。
カスタマイズの詳細については:
明示的な同意ページを防ぐ方法は?
Auth0は、認証用のIDプロバイダーとしても、APIのOAuth2承認サーバー(現在は米国リージョンでのみ利用可能)としても使用できます。
IDプロバイダーとして、同意ページについて心配する必要はありません。ユーザーは、Auth0によって管理される資格情報で認証され、アプリケーションにリダイレクトされます-それだけです。
OAuth2 as a serviceシナリオでは、同意が有効になっている場合、ロードマップには、特定のアプリケーションの同意ページのバイパスを許可することが含まれます。
最後に、それはあなたがそこにたどり着いた非常に興味深く、挑戦的なプロジェクトのように思えるので、あなたの最終的な決定とは無関係に幸運を祈ります。
レガシーアプリケーションの認証システムを再実装する必要があったとき、私は以前の仕事で同様のことをすでに経験しました。私たちは独自のIDプロバイダーと承認サーバーを実装しましたが、正直に言うと、本当に必要なものを忘れたのではないかと感じています。
それはあなた自身のセキュリティを展開する上での最大の問題だと思います、締め切りがショートカットを課し、セキュリティが本当にショートカットを作るのに良い領域ではない場合があるでしょう。
他にご不明な点がありましたら、お役に立てると思われる場合はお知らせください。