web-dev-qa-db-ja.com

アプリケーションのauth部分を構築するための適切な方法

私はグリーンフィールドプロジェクトに着手しており、バックエンドのサインアップ/サインインと認証の部分を非常に長い間行っていないか、構築していないため、今日の良い習慣に関する私の知識は非常に限られています。基本的に、基本的なローカルサインアップ/サインイン機能のみを実行しました。

このアプリはソーシャルネットワーキングに関連しているため、数年の間に数千人のユーザーが予想されます。したがって、明らかに、できるだけクリーンなアーキテクチャから始めたいと思います。しかし、「将来を見据えて」、コストを予測することも試みます。

今、プロジェクトのために私はサインアップ/ログインオプションが必要です:

  • 携帯電話番号.
  • eメール
  • Appleアカウント
  • Facebookのアカウント

Auth0、AWS Cognito(特にこのサービスに関心がある)などのマネージドサービスを調査しています。

しかし、プロセスとユーザーアカウント管理の設定方法を理解しているかどうかはわかりません。リレーショナルDBを使用する場合でも、アプリケーションでユーザーアカウントモデルを作成する必要がありますか?

  • ユーザーがメールでサインアップしたとき-私のアプリは、サインインやアクセス/更新トークンの生成や処理を含むすべての認証を処理します。
  • ユーザーが他のサードパーティの手段を介してサインアップしたとき-私はマネージド認証サービスを使用し、サービスのユーザーレコードをDBのユーザーレコードにリンクします。次に、トークンの生成と処理にマネージドサービスを使用します。

または、ユーザー管理全体(ユーザーアカウントモデルとデータを含む)をマネージド認証サービスに委任しますか?したがって、アプリケーションでの認証とユーザーアカウント管理に関連する唯一の機能は、マネージド認証サービスの呼び出しです...?

2
Milkncookiez

複数のIDプロバイダー間でユーザー管理を統合するには、常に独自のID(IDを持つユーザーモデル)を作成する必要があると思います。

次に、あなたはmapユーザーをさまざまなIDプロバイダー(ローカル(メールとパスワード)、OAuth、Auth0など)に割り当てます。

ユーザーが別のIDプロバイダーを介してもログインしたい場合、またはそれらの1つへのアクセスを失った場合でも、サイトへのアクセスは失われません。

2
9000