gpt4 book ai didi

c# - 如何将 IdentityServer4 与 ASP.NET Microsoft Identity 的自定义密码验证结合使用

转载 作者:行者123 更新时间:2023-11-30 13:44:15 29 4
gpt4 key购买 nike

我正在使用 IdentityServer4 并使用 ASP.NET Identity,并且想进行自定义密码验证,以便我可以添加密码过期验证(例如,如果密码超过 90 天,则让用户更改密码,等等……)。

我遇到了方法 .AddPasswordValidator<>设置 services.AddIdentity 时在ConfigureServices() Startup.cs 的方法,但找不到任何关于如何实现它的明确文档。

任何人都可以帮助实现或指出一些类似的示例代码吗? (或者可能有助于理解我在哪里/如何使用 IdentityServer4 实现用户/密码的一些自定义验证)?

最佳答案

我认为密码验证器不是您所需要的,但既然您已经问过 -
自定义密码验证器的示例(不是我的代码,链接到下面的文章):

public class SameCharacterPasswordValidator<TUser>: IPasswordValidator<TUser> 
where TUser : class
{
public Task<IdentityResult> ValidateAsync(UserManager<TUser> manager,
TUser user,
string password)
{
return Task.FromResult(password.Distinct().Count() == 1 ?
IdentityResult.Failed(new IdentityError
{
Code = "SameChar",
Description = "Passwords cannot be all the same character."
}) :
IdentityResult.Success);
}
}

您可以在 ConfigureServices 方法中应用您的自定义验证器

services.AddIdentity<ApplicationUser, IdentityRole>(options =>
{
// Basic built in validations
options.Password.RequireDigit = true;
options.Password.RequireLowercase = true;
options.Password.RequireNonLetterOrDigit = true;
options.Password.RequireUppercase = true;
options.Password.RequiredLength = 6;
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders()
// Your custom validator here
.AddPasswordValidator<SameCharacterPasswordValidator<ApplicationUser>>();

这是一篇关于 ASP.NET Identity 的密码验证器的好文章: https://elanderson.net/2016/03/asp-net-core-password-options-and-custom-validators/

请注意,密码验证器旨在检查密码是否采用您希望的格式(类似于正则表达式)。因此,密码过期与此无关。这是您密码的元数据,与密码格式无关。
对于该用例,您可以在 AspNetUsers 表中添加一个字段(您可以通过扩展继承自 PasswordChangedAt 日期字段的 IdentityUser(可能称为 ApplicationUser)的类。
然后,每次用户登录时,您都应该自己检查该验证。

P.S:重要的是要意识到密码的强度或与您的用户存储有关的任何事情实际上与 IdentityServer 无关。IdentityServer 充当您的 STS(安全 token 服务)。
我自己花了一些时间才意识到这一点,这就是为什么我认为它值得一提,尽管它对你来说可能是显而易见的。

关于c# - 如何将 IdentityServer4 与 ASP.NET Microsoft Identity 的自定义密码验证结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42787120/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com