【发布时间】:2015-08-03 02:21:02
【问题描述】:
默认情况下,MVC 5 单页应用程序使用 EntityFramework 存储用户和密码以进行身份验证。
在我的场景中,我必须使用现有的自制 AuthenticationService。
我决定创建一个自定义 IUserStore。然后我必须实现GetPasswordHashASync 来验证凭据。
我们的架构师认为这是安全漏洞,但我不同意。那么我想听听你对此的看法。
在同一服务器节点上获取另一个服务的数据库的 PasswordHash 有什么区别。在我看来,我不认为这是一个安全漏洞......
这里有一些代码来演示它是如何工作的。
用户使用他的凭据登录,因此它调用了我的 AccountController 的登录方法。然后,它调用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);
有什么想法吗?
【问题讨论】:
标签: c# authentication asp.net-mvc-5