使用ASP身份在ASP.Net核心中进行JWT身份验证

时间:2017-07-03 01:57:06

标签: asp.net-core asp.net-identity

几年前,我使用.Net 4.6和ASP Identity实现了一个Web应用程序,我在后端使用JWT进行授权和身份验证,并将AngularJS用于客户端。我记得,我在BitOfTech.net上使用了一系列帖子作为实施的基础。我使用VS2015社区来实现。

我现在正尝试使用ASP Identity Core,.Net Core和Angular 4在VS2017社区中重新实现此应用程序。

我有部分Angular工作并重新实现了JWT令牌,并且它使用正确的数据响应.well-known / openid-configuration端点,并且使用令牌端点调用AuthorizationController登录失败。

我已解决了许多问题,其中最大的问题是使用SQL Query升级该数据库,但AccountController在调用返回false的_userManager.CheckPasswordAsync()时失败。我正在使用Postman来运行测试,用户名和密码是正确的,因为针对相同的aspnet Identity DB运行的旧版本可以运行。

在早期的项目中,我必须实现从PasswordHasher派生的SQLPasswordHasher,它覆盖了VerifyHashedPassword()。我忘记了为什么我需要这样做的原因但我似乎记得因为DB最初是使用ASP.Net Membership构建的,所以存储的密码是使用较旧的算法生成的。

所以我决定重新实现它,发现我需要创建一个基于IPasswordHasher的类,它实现了VerifyHashedPassword()和HashPassword()

然后我所要做的就是在启动时通过分配userManager.PasswordHasher = SQLPasswordHasher

将我的SQLPasswordHasher注入UserManager

但那是我被困的地方。在我的旧实现中,在我的代码中有一个地方我创建了一个UserManager,但是启动已经发生了很大变化,以至于我找不到我要做的事情。谷歌建议修改IdentityConfig.cs,但似乎不再使用它。

如果有人可以向我解释我是如何将自己的PasswordHasher注入到UserManager中的,我会永远感激。

我不确定这是否相关,但我使用的是OpenIddict。

感谢您阅读此内容。

1 个答案:

答案 0 :(得分:0)

我是对的。我需要覆盖PasswordHasher而不是创建一个全新的类。

可以关闭