2

標準のUserManagerクラスを使用してEntity Frameworkを使用して認証を実行する既存のASP.net MVCとWebAPIのWebサイトがあります。私は認証を行い、外部のサードパーティREST Webサービスを使って認証を行い、ユーザーの詳細を保存して更新する必要があります。ASP.net IdentityをサードパーティのRESTサービスで認証に使用するにはどうすればよいですか?

サードパーティのWebサービスには、単純なloginエンドポイントがあり、ユーザー名とパスワードを取得し、ログインが成功した場合はトークンを返します。

可能であれば私は彼/彼女がログインしたら、ユーザーのロールを管理するためにASP.netアイデンティティAspNetRolesテーブルを継続して使用する、したいと思います。

このシナリオを実装するための最善のアプローチは何ですか?私はもともとカスタムを書くことを考えましたUserStoreしかし、私はパスワードハッシュにアクセスすることを前提としています。サードパーティのAPIエンドポイントを使用してログインしてパスワードを更新するだけで、データベースユーザーテーブルに直接アクセスすることはできません。

答えて

4

私自身の質問に答えるために、私はApplicationUserManagerクラスでこれを処理しました。私はFindAsyncメソッドをオーバーライドし、サードパーティのWebサービスに電話することでそこの資格情報を検証しました。他のエンドポイントを呼び出すために使用されるセッショントークンが返されました。

ユーザーClaimIdentityに別のオーバーライドされたメソッド--- CreateIdentityAsyncのセッショントークンを保存しました。このセッショントークンは、後続のWebAPIコールでベアラトークンから読み取ることができます。

このテクニックは、WebAPIとWebサイトの両方のログインに使用できます。ユーザーがサードパーティサービスに資格情報を保存していない場合は、EFを使用してユーザーの資格情報を有効にする必要があります。

+1

私も同様のボートにいます。これをどうやって行ったかについてのサンプルコードを提供できますか?このパターンを実装して以来問題が発生しましたか? – ragerory

関連する問題