現在、ユーザー資格情報を保存し、承認と認証を実行する Django アプリケーションがあります。フロントエンドを Angular SPA に分割し、バックエンドを REST API に変換中です。私の Django API は、Azure API Gateway によって保護された Azure API アプリとして存続します。Django から認証部分を削除し、ユーザーが Google または Microsoft アカウントを介して OpenID Connect を使用してサインインできるようにしたいと考えています。私がしたいことはこれです:
ユーザーがサイトにアクセスすると、アプリに登録したことがないと仮定すると、Google アカウントまたは Microsoft アカウントでサインインするオプションが表示されます。ユーザーが Google または Microsoft アカウントを使用してサインインすることを決定した場合 (これが私が混乱している場所であり、ここに投稿している理由です...) API ゲートウェイが認証を実行し、JSON Web トークンを生成すると思います(JWT) を作成し、そのトークンを Django API に送り返します。Django は JWT を受信して復号化し、JWT 内の電子メール アドレスに一致するユーザー アカウントがあるかどうかを確認します。ユーザー アカウントがない場合、Django はユーザー アカウント テーブルにユーザーを追加します (パスワードは保存されません)。その電子メール アドレスに一致するユーザーがいる場合、Django はそのユーザーの参加を許可します。
とはいえ、私の質問は次のとおりだと思います。
認証は API Management Gateway で行うべきですか、それとも Azure Web API で行うべきですか?
Django の組み込み認証システムを使用して、自分のやりたいことを実行できますか?それとも不要ですか?
私はこれらすべてを過度に複雑にしていますか? これを行う簡単な方法はありますか?これはすべて大変な作業のようです。
(Oauth2 の代わりに) OpenID Connect を使用する必要がありますか? 私はどちらも経験がありません。