默认情况下,MVC 5单页应用程序使用EntityFramework来存储用户和密码以进行身份验证。
在我的情况下,我必须使用现有的自制AuthenticationService。
我决定创建一个自定义的IUserStore。然后,我必须实现GetPasswordHashASync
来验证凭据。
我们的架构师认为这是一种安全漏洞,但我不同意。因此,我想听听你的意见。
获取另一个服务数据库的PasswordHash有何区别?在我看来,这并不是一种安全漏洞...
以下是一些代码,以演示它的工作原理。
用户使用其凭据登录,因此调用我的AccountController的Login方法。然后,它调用UserManager FindUserAsync
:
var user = await UserManager.FindAsync(model.Email, model.Password);
由于我创建了自己的IUserStore,因此我这样调用我们的服务(WFC):
if (client.IsUsernameExists(userName, remoteInfo, out messages))
{
user = new ApplicationUser() { Email = userName, Username = userName};
}
在内部,它调用GetPasswordHashAsync
。我的实现然后再次调用我们的服务:
passwordHash = client.GetPasswordHash(user.Username, RemoteInfo, out messages);
有什么想法吗?