【问题标题】:Manually validating ASP.NET Identity user account手动验证 ASP.NET Identity 用户帐户
【发布时间】:2014-08-10 16:51:27
【问题描述】:
我有这个使用 ASP.NET Identity(2.0 之前)的 ASP.NET MVC 5 站点,该站点带有一个 WebAPI。
我有一个 Windows Phone 应用程序,它将使用来自该站点的服务,我想为此验证用户帐户;所以我会从 WP 应用程序中询问用户名和密码,以将它们发送到服务器进行验证。现在,我想使用 ASP.NET Identity 已经在手机上使用的相同散列技术,所以我可以发送散列,并在另一端进行比较,但我不确定它使用的是什么散列,另外,它似乎在使用某种盐,因为我有几个具有相同密码的测试用户帐户,但有不同的哈希值,也许是 SecurityStamp?我不想通过网络发送纯文本密码,我很确定这是一个巨大的不。
我应该如何处理这个问题?
谢谢
【问题讨论】:
标签:
c#
asp.net-mvc
asp.net-web-api
asp.net-identity
【解决方案1】:
我不会窃取优秀的 existing answer 的风头,它解释了 ASP.NET Identity 如何在后台执行散列。
话虽如此,这个问题实际上比你想象的要容易得多。您可以通过网络发送“纯文本”密码,但您需要通过 SSL/TLS 发送密码!这实际上是大多数网站发送您的凭据的方式。 整个 HTTP 请求在通过网络传输时被加密。解决这个问题的简单方法是让自己获得一个证书并建立一个执行 SSL/TLS 的 Web 服务器。
要真正回答这个问题(尽管我不相信这是正确的解决方案),虽然看起来您可以获得有关如何执行散列的源代码,但我不建议在客户端上实现它边。原因是如果您升级到更新版本的 ASP.NET Identity 会怎样?您将需要追踪源代码并更新客户端应用程序的散列方法。您的用户将如何在他们的设备上获得新的哈希方法?他们需要升级到您的应用程序的最新版本。因此,现在您遇到的用户无法在升级应用程序之前进行身份验证,因为您的服务器端版本已升级。