IdentityServer3を使用して、ユーザーが登録プロセスを完了した後、自動的にログインしてローカル ユーザーをクライアント アプリケーションにリダイレクトする必要があります。これを行うエレガントな方法はありますか?私の掘り下げから、そうではないと思われますが、これを達成するために使用できるハックはありますか?
カスタムUser Serviceを使用して外部ユーザーに対してこれを実現できましたが、これは部分的なログインを利用していました。ただし、ローカル ユーザーの場合、ユーザー名とパスワードでログインするまで、ユーザー サービスによって処理される認証プロセスには参加しません。
また、登録プロセスは複数の画面/ビューでカバーされているため、ユーザーのパスワードにアクセスできないことにも注意してください。この場合、登録プロセスの一部として電子メールを確認する必要があります。
進捗:
このhttps://github.com/IdentityServer/IdentityServer3/issues/563を見つけましたが、リダイレクトをトリガーする方法がわかりませんでした。
以下を使用して認証トークンを発行しようとしています。
var localAuthResult = userService.AuthenticateLocalAsync(user);
Request.GetOwinContext().Authentication.SignIn(new ClaimsIdentity(localAuthResult.Result.User.Claims, Thinktecture.IdentityServer.Core.Constants.PrimaryAuthenticationType));
しかし、これまでにできる最善の方法は、ユーザーをログイン画面にリダイレクトすることです。
HttpCookie cookie = Request.Cookies["signin"]; // Stored previously at beginning of registration process
return Redirect("~/core/login?signin=" + cookie.Value);