Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 适用于android的ASP.NETIdentity 2.0和RESTAPI_C#_Android_Asp.net Mvc_Rest_Asp.net Identity 2 - Fatal编程技术网

C# 适用于android的ASP.NETIdentity 2.0和RESTAPI

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

我有一个使用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代码


请帮助我,我从最近两天就被卡住了。

在客户端上散列密码是个坏主意。它如何使它比只发送一个明文密码更好?如果MiTM攻击者获得哈希密码,他将获得登录您的系统所需的所有信息。是的,您没有传输原始密码,但是您传输的哈希实际上成为密码,并且您将密码的纯文本哈希存储在数据库中

盐呢?在Identity框架中,salt存储在与散列相同的字段中——它们被一个接一个地追加。如果在同一个字符串上运行PasswordHasher.HashPassword 10次,将得到10个不同的结果,因为此结果已经包含了salt。若您尝试在客户机上运行此操作,每次都会得到不同的字符串,并且无法与数据库中已存储的哈希/salt进行比较。因此,您必须以某种方式从服务器传递盐,才能使用相同的盐进行散列。这使得它过于复杂,并且容易出错


不要试图自己发明安全系统。在加密连接上以明文形式传递用户名/密码,并让框架为您执行哈希/持久化操作。

在客户端上哈希密码的优点是,您不必使系统更加安全,但您为客户端提供了额外的安全层。在发生MiTM攻击的情况下,攻击者将无法在用户使用相同密码的其他应用程序中使用明文密码。