C# 适用于android的ASP.NETIdentity 2.0和RESTAPI
我有一个使用asp.net identity 2.0进行身份验证的MVC网站。 我还在为android移动应用程序的相同DB开发RESTAPI。 我想在RESTAPI中使用identity 2.0哈希密码进行身份验证,但不能从android应用程序发送普通密码。 Android应用程序必须以与identity 2.0 user manager相同的方式散列密码,这样我就可以比较Android应用程序发送的密码和AspNetUsers表中的密码。 问题是,我找不到在Java/Android中实现identity 2.0 PasswordHasher的任何实现或指南 下面是identity 2.0 PasswordHasher的c代码C# 适用于android的ASP.NETIdentity 2.0和RESTAPI,c#,android,asp.net-mvc,rest,asp.net-identity-2,C#,Android,Asp.net Mvc,Rest,Asp.net Identity 2,我有一个使用asp.net identity 2.0进行身份验证的MVC网站。 我还在为android移动应用程序的相同DB开发RESTAPI。 我想在RESTAPI中使用identity 2.0哈希密码进行身份验证,但不能从android应用程序发送普通密码。 Android应用程序必须以与identity 2.0 user manager相同的方式散列密码,这样我就可以比较Android应用程序发送的密码和AspNetUsers表中的密码。 问题是,我找不到在Java/Android中实现i
请帮助我,我从最近两天就被卡住了。在客户端上散列密码是个坏主意。它如何使它比只发送一个明文密码更好?如果MiTM攻击者获得哈希密码,他将获得登录您的系统所需的所有信息。是的,您没有传输原始密码,但是您传输的哈希实际上成为密码,并且您将密码的纯文本哈希存储在数据库中 盐呢?在Identity框架中,salt存储在与散列相同的字段中——它们被一个接一个地追加。如果在同一个字符串上运行PasswordHasher.HashPassword 10次,将得到10个不同的结果,因为此结果已经包含了salt。若您尝试在客户机上运行此操作,每次都会得到不同的字符串,并且无法与数据库中已存储的哈希/salt进行比较。因此,您必须以某种方式从服务器传递盐,才能使用相同的盐进行散列。这使得它过于复杂,并且容易出错
不要试图自己发明安全系统。在加密连接上以明文形式传递用户名/密码,并让框架为您执行哈希/持久化操作。在客户端上哈希密码的优点是,您不必使系统更加安全,但您为客户端提供了额外的安全层。在发生MiTM攻击的情况下,攻击者将无法在用户使用相同密码的其他应用程序中使用明文密码。