如何在 Identity Server 4 中设置密码选项

Rob*_*lls 2 identityserver4

我使用 Asp.net 身份设置 IdentityServer4。

如何配置最小密码长度、是否需要数字等项?

通常在 MVC 项目中配置 Identity 时,我会这样做:

    manager.PasswordValidator = new PasswordValidator
    {
        RequiredLength = 6,
        RequireNonLetterOrDigit = false,
        RequireDigit = false,
        RequireLowercase = false,
        RequireUppercase = false,
    };
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在我的 ID4 项目中设置它。

在我的 startup.cs 我有以下内容:

    services.AddIdentity<ApplicationUser, IdentityRole>()
        .AddEntityFrameworkStores<ApplicationDbContext>()
        .AddDefaultTokenProviders();

    services.AddMvc();

    services.Configure<IISOptions>(iis =>
    {
        iis.AuthenticationDisplayName = "Windows";
        iis.AutomaticAuthentication = false;
    });

    var builder = services.AddIdentityServer(options =>
    {
        options.Events.RaiseErrorEvents = true;
        options.Events.RaiseInformationEvents = true;
        options.Events.RaiseFailureEvents = true;
        options.Events.RaiseSuccessEvents = true;

    })
        .AddInMemoryIdentityResources(Config.GetIdentityResources())
        .AddInMemoryApiResources(Config.GetApis())
        .AddInMemoryClients(Config.GetClients())
        .AddAspNetIdentity<ApplicationUser>();
Run Code Online (Sandbox Code Playgroud)

小智 5

您需要将其配置为选项。

  services.AddIdentity<ApplicationUser, IdentityRole>(options =>
        {
            //options.SignIn.RequireConfirmedEmail = true; 

            //User validator
            options.User.RequireUniqueEmail = true;

            //Password Validator
            options.Password.RequireDigit = true;
            options.Password.RequiredLength = 6;
            options.Password.RequireUppercase = true;
            options.Password.RequireLowercase = true;
            options.Password.RequireNonAlphanumeric = true;
        })
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();
Run Code Online (Sandbox Code Playgroud)