相关疑难解决方法(0)

ASP.NET Identity的默认密码哈希 - 它是如何工作的并且是否安全?

我想知道在MVC 5和ASP.NET Identity Framework附带的UserManager中默认实现的Password Hasher是否足够安全?如果是这样,如果你可以向我解释它是如何工作的?

IPasswordHasher界面如下所示:

public interface IPasswordHasher
{
    string HashPassword(string password);
    PasswordVerificationResult VerifyHashedPassword(string hashedPassword, 
                                                       string providedPassword);
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它不需要盐,但在这个帖子中提到:" Asp.net身份密码哈希 ",它确实在幕后加盐.所以我想知道它是如何做到的?这盐来自何处?

我担心的是盐是静态的,使它非常不安全.

c# asp.net security passwords asp.net-identity

148
推荐指数
5
解决办法
11万
查看次数

如何使用 Identity 但不使用 Azure 将身份验证添加到 ASP.NET Core 最小 API?

我确信这个问题的答案一定是显而易见的,因为这是一件显而易见的事情,但我似乎找不到任何指导。

我有一个 ASP.NET Core 最小 API,并且想要添加身份验证。我已经在不同的项目中设置了 Identity,并且希望对 API 使用相同的数据库(即相同的用户)。

我看到这篇博客文章,它看起来很有希望,直到我意识到那里的代码以纯文本形式检查用户名和密码(admin在示例中都使用)...

if (credentials[0] == "admin" && credentials[1] == "admin")
Run Code Online (Sandbox Code Playgroud)

问题在于(值得庆幸的是),身份不会以纯文本形式存储密码,它们是经过哈希处理的,所以我无法进行简单的比较。

我尝试对传入的密码进行哈希处理,如本答案所示,但这不起作用,因为每次调用时哈希值都不同_userManager.PasswordHasher.HashPassword

我尝试使用 ASP.NET Core 的SignInManager.CanSignInAsync方法来检查是否可以使用凭据登录,但这需要我将以下内容添加到Program...

builder.Services.AddIdentity<User, IdentityRole>(options => {
    // options removed for clarity
  })
  .AddDefaultTokenProviders()
  .AddEntityFrameworkStores<AppDbContext>();
Run Code Online (Sandbox Code Playgroud)

然而,一旦我这样做了,对 API 的任何请求都会尝试重定向到登录页面,这显然在从代码调用 API 时不起作用。

我在 Microsoft 网站上只能找到这篇文章,但这假设您使用的是 Azure。目前,我仍在本地计算机上开发它,我还不知道项目所有者是否想要部署到 Azure 还是他们自己的托管服务器,因此那里的代码对我没有帮助。

任何人都能够向我解释我如何完成看似如此明显且简单的任务?如果我需要提供更多信息,请告诉我。谢谢

c# authentication asp.net-identity asp.net-core minimal-apis

5
推荐指数
1
解决办法
4244
查看次数