web-dev-qa-db-ja.com

IdentityServer4を使用したユーザー登録プロセス

ASP.NET Core MVC Webアプリケーションでの認証にIdentityServer4を使用したいのですが、ユーザー登録プロセスが面倒です。ユーザー登録が必要なほとんどのWebサイトでは、ローカルユーザーアカウントを使用している場合は、別のサイト(Facebook、Twitterなど)でリダイレクトしてサインアップすることはありません。

1つの解決策は、MVCクライアントと同じプロセスでIdentityServer4をホストすることですが、それは推奨されません。

IdentityServer4でのローカルユーザー登録の実際の良い例はありますか?

13
DMannion

IdentityServerは既存のユーザーを認証するためのものであり、実際に新しいユーザーを作成するためのものではありません。ユースケースでは、3つのプロジェクトが役割を果たしています。

  • IDサーバー
  • 保護されたAPI
  • IDプロバイダー(aspnetコアID)プロジェクト

ユーザーは、IDプロバイダーに適切な構造を作成するAPIの呼び出しによって作成されます。 IDサーバーは、トークンの要求を検証するときにIDプロバイダーを呼び出します。 APIはIDサーバーを使用してリソースを保護し、IDプロバイダーはクレーム(許可など)に含まれていないユーザーについて必要な情報を取得します。

このようにして、IDプロバイダーはプロジェクト間(異なるロールを持つ1つのユーザーベース)で共有でき、Identity Serverは純粋にユーザーを認証するためのものです。すべてのユーザーmanagement関数は他の場所に属します。


編集:@peyman特定の画期的なことは何もしていません:aspnetコアIDフレームワークを使用するだけです( http://odetocode.com/blogs/scott/archive/2013/11/25/asp-net -core-identity.aspx )。

IUserStoreUserManagerは、この主なドライバーです。ユーザーが作成されると、ロールが割り当てられます。ロールは、どのアプリケーションがそのユーザーの作成を要求したかに基づいています。 IUserStoreの実装は、IDの検証時に最終的にIdentityServerによって呼び出されるものであり、提供されたデータはIdentityServerによってクレームを構築するために使用されます。リソースAPIは、クレームベースの承認にPoliciesを使用して比較的簡単に保護されます( https://docs.Microsoft.com/en-us/aspnet/core/security/authorization/claims

19
Mashton