使用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);