Konfigurowanie ASP.NET Core Identity
ASP.NET Core Identity używa wartości domyślnych dla ustawień, takich jak zasady haseł, blokada i cookie konfiguracja. Te ustawienia można zastąpić podczas uruchamiania aplikacji.
Identity Opcje
Klasa IdentityOptions reprezentuje opcje, których można użyć do skonfigurowania Identity systemu. IdentityOptions należy ustawić po wywołaniu AddIdentity metody lub AddDefaultIdentity.
Roszczeń Identity
IdentityOptions.ClaimsIdentity określa ClaimsIdentityOptions właściwość z właściwościami pokazanymi w poniższej tabeli.
Właściwości | opis | Wartość domyślna |
---|---|---|
RoleClaimType | Pobiera lub ustawia typ oświadczenia używany dla oświadczenia roli. | ClaimTypes.Role |
SecurityStampClaimType | Pobiera lub ustawia typ oświadczenia używany dla oświadczenia sygnatury zabezpieczeń. | AspNet.Identity.SecurityStamp |
UserIdClaimType | Pobiera lub ustawia typ oświadczenia używany dla oświadczenia identyfikatora użytkownika. | ClaimTypes.NameIdentifier |
UserNameClaimType | Pobiera lub ustawia typ oświadczenia używany dla oświadczenia nazwy użytkownika. | ClaimTypes.Name |
Blokady
Blokada jest ustawiona w metodzie PasswordSignInAsync :
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
returnUrl ??= Url.Content("~/");
ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
if (ModelState.IsValid)
{
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, set lockoutOnFailure: true
var result = await _signInManager.PasswordSignInAsync(Input.Email,
Input.Password, Input.RememberMe,
lockoutOnFailure: false);
if (result.Succeeded)
{
_logger.LogInformation("User logged in.");
return LocalRedirect(returnUrl);
}
if (result.RequiresTwoFactor)
{
return RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe });
}
if (result.IsLockedOut)
{
_logger.LogWarning("User account locked out.");
return RedirectToPage("./Lockout");
}
else
{
ModelState.AddModelError(string.Empty, "Invalid login attempt.");
return Page();
}
}
// If we got this far, something failed, redisplay form
return Page();
}
Powyższy kod jest oparty na szablonieIdentityLogin
.
Opcje blokady są ustawiane w pliku Program.cs
:
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using RPauth.Data;
var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(connectionString));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
builder.Services.AddDefaultIdentity<IdentityUser>(options =>
options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
builder.Services.AddRazorPages();
builder.Services.Configure<IdentityOptions>(options =>
{
// Default Lockout settings.
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
options.Lockout.MaxFailedAccessAttempts = 5;
options.Lockout.AllowedForNewUsers = true;
});
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseMigrationsEndPoint();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Powyższy kod ustawia IdentityOptions LockoutOptions wartości domyślne.
Pomyślne uwierzytelnienie resetuje liczbę nieudanych prób dostępu i resetuje zegar.
IdentityOptions.Lockout określa LockoutOptions właściwość z właściwościami wyświetlanymi w tabeli.
Właściwości | opis | Wartość domyślna |
---|---|---|
AllowedForNewUsers | Określa, czy nowy użytkownik może zostać zablokowany. | true |
DefaultLockoutTimeSpan | Czas blokowania użytkownika w przypadku wystąpienia blokady. | 5 min |
MaxFailedAccessAttempts | Liczba nieudanych prób dostępu do momentu zablokowania użytkownika, jeśli blokada jest włączona. | 5 |
Hasło
Domyślnie Identity hasła zawierają wielkie litery, małe litery, cyfrę i znak inny niż alfanumeryczny. Hasła muszą mieć długość co najmniej sześciu znaków.
Hasła są konfigurowane przy użyciu:
- PasswordOptions w pliku
Program.cs
. [StringLength]
atrybuty właściwości,Password
jeśli Identity są szkieletowane w aplikacji.InputModel
Password
właściwości znajdują się w następujących plikach:Areas/Identity/Pages/Account/Register.cshtml.cs
Areas/Identity/Pages/Account/ResetPassword.cshtml.cs
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using RPauth.Data;
var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(connectionString));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
builder.Services.AddDefaultIdentity<IdentityUser>(options =>
options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
builder.Services.AddRazorPages();
builder.Services.Configure<IdentityOptions>(options =>
{
// Default Password settings.
options.Password.RequireDigit = true;
options.Password.RequireLowercase = true;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequireUppercase = true;
options.Password.RequiredLength = 6;
options.Password.RequiredUniqueChars = 1;
});
var app = builder.Build();
// Remaining code removed for brevity.
IdentityOptions.Password określa PasswordOptions właściwość z właściwościami wyświetlanymi w tabeli.
Właściwości | opis | Wartość domyślna |
---|---|---|
RequireDigit | Wymaga liczby z zakresu od 0 do 9 w haśle. | true |
RequiredLength | Minimalna długość hasła. | 6 |
RequireLowercase | Wymaga małego znaku w haśle. | true |
RequireNonAlphanumeric | Wymaga znaku innego niż alfanumeryczne w haśle. | true |
RequiredUniqueChars | Dotyczy tylko ASP.NET Core 2.0 lub nowszej. Wymaga liczby odrębnych znaków w haśle. |
1 |
RequireUppercase | Wymaga wielkich liter w haśle. | true |
Logowanie
Poniższy kod ustawia SignIn
ustawienia (do wartości domyślnych):
builder.Services.Configure<IdentityOptions>(options =>
{
// Default SignIn settings.
options.SignIn.RequireConfirmedEmail = false;
options.SignIn.RequireConfirmedPhoneNumber = false;
});
IdentityOptions.SignIn określa SignInOptions właściwość z właściwościami wyświetlanymi w tabeli.
Właściwości | opis | Wartość domyślna |
---|---|---|
RequireConfirmedEmail | Wymaga potwierdzonej wiadomości e-mail w celu zalogowania się. | false |
RequireConfirmedPhoneNumber | Wymaga potwierdzonego numeru telefonu do zalogowania się. | false |
Tokeny
IdentityOptions.Tokens określa TokenOptions właściwość z właściwościami wyświetlanymi w tabeli.
Właściwości | opis |
---|---|
AuthenticatorTokenProvider | Pobiera lub ustawia AuthenticatorTokenProvider używane do weryfikowania logowania dwuskładnikowego przy użyciu wystawcy uwierzytelniającego. |
ChangeEmailTokenProvider | Pobiera lub ustawia ChangeEmailTokenProvider używane do generowania tokenów używanych w wiadomościach e-mail z potwierdzeniem zmiany wiadomości e-mail. |
ChangePhoneNumberTokenProvider | Pobiera lub ustawia ChangePhoneNumberTokenProvider używane do generowania tokenów używanych podczas zmieniania numerów telefonów. |
EmailConfirmationTokenProvider | Pobiera lub ustawia dostawcę tokenu używanego do generowania tokenów używanych w wiadomościach e-mail z potwierdzeniem konta. |
PasswordResetTokenProvider | Pobiera lub ustawia IUserTwoFactorTokenProvider<TUser> używane do generowania tokenów używanych w wiadomościach e-mail resetowania haseł. |
ProviderMap | Służy do konstruowania dostawcy tokenów użytkownika z kluczem używanym jako nazwa dostawcy. |
User
builder.Services.Configure<IdentityOptions>(options =>
{
// Default User settings.
options.User.AllowedUserNameCharacters =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
options.User.RequireUniqueEmail = false;
});
IdentityOptions.User określa UserOptions właściwość z właściwościami wyświetlanymi w tabeli.
Właściwości | opis | Wartość domyślna |
---|---|---|
AllowedUserNameCharacters | Dozwolone znaki w nazwie użytkownika. | abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 -._@+ |
RequireUniqueEmail | Wymaga, aby każdy użytkownik miał unikatową wiadomość e-mail. | false |
Ustawienia usługiCookie
Skonfiguruj aplikację cookie w programie Program.cs
. Polecenie ConfigureApplicationCookie musi być wywoływane po wywołaniu metody AddIdentity
lub AddDefaultIdentity
.
builder.Services.ConfigureApplicationCookie(options =>
{
options.AccessDeniedPath = "/Identity/Account/AccessDenied";
options.Cookie.Name = "YourAppCookieName";
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
options.LoginPath = "/Identity/Account/Login";
// ReturnUrlParameter requires
//using Microsoft.AspNetCore.Authentication.Cookies;
options.ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter;
options.SlidingExpiration = true;
});
Aby uzyskać więcej informacji, zobacz CookieAuthenticationOptions.
Opcje skrótów haseł
PasswordHasherOptions pobiera i ustawia opcje tworzenia skrótów haseł.
Opcja | Opis |
---|---|
CompatibilityMode | Tryb zgodności używany podczas tworzenia skrótów nowych haseł. Wartość domyślna to IdentityV3. Pierwszy bajt skrótu hasła, nazywany znacznikiem formatu, określa wersję algorytmu wyznaczania wartości skrótu używanej do wyznaczania wartości skrótu hasła. Podczas weryfikowania hasła względem skrótu VerifyHashedPassword metoda wybiera prawidłowy algorytm na podstawie pierwszego bajtu. Klient może uwierzytelnić się niezależnie od wersji algorytmu użytej do utworzenia skrótu hasła. Ustawienie trybu zgodności wpływa na tworzenie skrótów nowych haseł. |
IterationCount | Liczba iteracji używanych podczas tworzenia skrótów haseł przy użyciu pliku PBKDF2. Ta wartość jest używana tylko wtedy, gdy CompatibilityMode parametr ma wartość IdentityV3. Wartość musi być dodatnią liczbą całkowitą i wartością domyślną .100000 |
W poniższym przykładzie parametr IterationCount jest ustawiony na 12000
wartość w Program.cs
pliku :
// using Microsoft.AspNetCore.Identity;
builder.Services.Configure<PasswordHasherOptions>(option =>
{
option.IterationCount = 12000;
});
Globalnie wymaga uwierzytelnienia wszystkich użytkowników
Aby uzyskać informacje na temat globalnego wymagania uwierzytelnienia wszystkich użytkowników, zobacz Wymaganie uwierzytelnionych użytkowników.
ISecurityStampValidator i SignOut wszędzie
Aplikacje muszą reagować na zdarzenia dotyczące akcji poufnych zabezpieczeń przez ponowne wygenerowanie użytkowników ClaimsPrincipal. Na przykład ClaimsPrincipal
element powinien być ponownie wygenerowany podczas dołączania do roli, zmiany hasła lub innych zdarzeń poufnych zabezpieczeń. Identityużywa interfejsu ISecurityStampValidator do ponownego wygenerowania .ClaimsPrincipal
Domyślna implementacja Identity rejestru securityStampValidator z główną aplikacją cookie i dwuskładnikowym cookie. Moduł sprawdzania poprawności jest podłączony do OnValidatePrincipal zdarzenia każdego cookie z nich, aby wywołać metodę w Identity celu sprawdzenia, czy oświadczenie sygnatury zabezpieczeń użytkownika pozostaje niezmienione z tego, co jest przechowywane w elemencie cookie. Moduł sprawdzania poprawności jest wywoływany w regularnych odstępach czasu. Interwał wywołań jest kompromisem między zbyt częstym i niewystarczającym trafieniem do magazynu danych. Sprawdzanie z długim interwałem powoduje nieaktualne oświadczenia. Wywołaj polecenie userManager.UpdateSecurityStampAsync(user)
, aby wymusić unieważnienie istniejących plików cookie przy następnym sprawdzeniu. Większość konta interfejsu Identity użytkownika i zarządzanie wywołaniami userManager.UpdateSecurityStampAsync(user)
stron po zmianie hasła lub dodaniu nazwy logowania. Aplikacje mogą wywoływać metodę userManager.UpdateSecurityStampAsync(user)
implementowania akcji wylogowywanie wszędzie.
Zmiana interwału walidacji jest wyświetlana w następującym wyróżnionym kodzie:
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using WebClaimsPrincipal.Data;
var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection")
?? throw new InvalidOperationException("'DefaultConnection' not found.");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(connectionString));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
builder.Services.AddDefaultIdentity<IdentityUser>(options =>
options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
// Force Identity's security stamp to be validated every minute.
builder.Services.Configure<SecurityStampValidatorOptions>(o =>
o.ValidationInterval = TimeSpan.FromMinutes(1));
builder.Services.AddRazorPages();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseMigrationsEndPoint();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
ASP.NET Core Identity używa wartości domyślnych dla ustawień, takich jak zasady haseł, blokada i cookie konfiguracja. Te ustawienia można zastąpić w Startup
klasie .
Identity Opcje
Klasa IdentityOptions reprezentuje opcje, których można użyć do skonfigurowania Identity systemu. IdentityOptions
należy ustawić po wywołaniu AddIdentity
metody lub AddDefaultIdentity
.
Roszczeń Identity
IdentityOptions.ClaimsIdentity określa ClaimsIdentityOptions właściwość z właściwościami pokazanymi w poniższej tabeli.
Właściwości | opis | Wartość domyślna |
---|---|---|
RoleClaimType | Pobiera lub ustawia typ oświadczenia używany dla oświadczenia roli. | ClaimTypes.Role |
SecurityStampClaimType | Pobiera lub ustawia typ oświadczenia używany dla oświadczenia sygnatury zabezpieczeń. | AspNet.Identity.SecurityStamp |
UserIdClaimType | Pobiera lub ustawia typ oświadczenia używany dla oświadczenia identyfikatora użytkownika. | ClaimTypes.NameIdentifier |
UserNameClaimType | Pobiera lub ustawia typ oświadczenia używany dla oświadczenia nazwy użytkownika. | ClaimTypes.Name |
Blokady
Blokada jest ustawiona w metodzie PasswordSignInAsync :
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
returnUrl = returnUrl ?? Url.Content("~/");
if (ModelState.IsValid)
{
var result = await _signInManager.PasswordSignInAsync(Input.Email,
Input.Password, Input.RememberMe,
lockoutOnFailure: false);
if (result.Succeeded)
{
_logger.LogInformation("User logged in.");
return LocalRedirect(returnUrl);
}
if (result.RequiresTwoFactor)
{
return RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl,
Input.RememberMe });
}
if (result.IsLockedOut)
{
_logger.LogWarning("User account locked out.");
return RedirectToPage("./Lockout");
}
else
{
ModelState.AddModelError(string.Empty, "Invalid login attempt.");
return Page();
}
}
// If we got this far, something failed, redisplay form
return Page();
}
Powyższy kod jest oparty na szablonie Login
Identity .
Opcje blokady są ustawiane w pliku StartUp.ConfigureServices
:
services.Configure<IdentityOptions>(options =>
{
// Default Lockout settings.
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
options.Lockout.MaxFailedAccessAttempts = 5;
options.Lockout.AllowedForNewUsers = true;
});
Powyższy kod ustawia IdentityOptions LockoutOptions wartości domyślne.
Pomyślne uwierzytelnienie resetuje liczbę nieudanych prób dostępu i resetuje zegar.
IdentityOptions.Lockout określa LockoutOptions właściwość z właściwościami wyświetlanymi w tabeli.
Właściwości | opis | Wartość domyślna |
---|---|---|
AllowedForNewUsers | Określa, czy nowy użytkownik może zostać zablokowany. | true |
DefaultLockoutTimeSpan | Czas blokowania użytkownika w przypadku wystąpienia blokady. | 5 min |
MaxFailedAccessAttempts | Liczba nieudanych prób dostępu do momentu zablokowania użytkownika, jeśli blokada jest włączona. | 5 |
Hasło
Domyślnie Identity hasła zawierają wielkie litery, małe litery, cyfrę i znak inny niż alfanumeryczny. Hasła muszą mieć długość co najmniej sześciu znaków.
Hasła są konfigurowane przy użyciu:
- PasswordOptions w pliku
Startup.ConfigureServices
. [StringLength]
atrybuty właściwości,Password
jeśli Identity są szkieletowane w aplikacji.InputModel
Password
właściwości znajdują się w następujących plikach:Areas/Identity/Pages/Account/Register.cshtml.cs
Areas/Identity/Pages/Account/ResetPassword.cshtml.cs
services.Configure<IdentityOptions>(options =>
{
// Default Password settings.
options.Password.RequireDigit = true;
options.Password.RequireLowercase = true;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequireUppercase = true;
options.Password.RequiredLength = 6;
options.Password.RequiredUniqueChars = 1;
});
IdentityOptions.Password określa PasswordOptions właściwość z właściwościami wyświetlanymi w tabeli.
Właściwości | opis | Wartość domyślna |
---|---|---|
RequireDigit | Wymaga liczby z zakresu od 0 do 9 w haśle. | true |
RequiredLength | Minimalna długość hasła. | 6 |
RequireLowercase | Wymaga małego znaku w haśle. | true |
RequireNonAlphanumeric | Wymaga znaku innego niż alfanumeryczne w haśle. | true |
RequiredUniqueChars | Dotyczy tylko ASP.NET Core 2.0 lub nowszej. Wymaga liczby odrębnych znaków w haśle. |
1 |
RequireUppercase | Wymaga wielkich liter w haśle. | true |
Logowanie
Poniższy kod ustawia SignIn
ustawienia (do wartości domyślnych):
services.Configure<IdentityOptions>(options =>
{
// Default SignIn settings.
options.SignIn.RequireConfirmedEmail = false;
options.SignIn.RequireConfirmedPhoneNumber = false;
});
IdentityOptions.SignIn określa SignInOptions właściwość z właściwościami wyświetlanymi w tabeli.
Właściwości | opis | Wartość domyślna |
---|---|---|
RequireConfirmedEmail | Wymaga potwierdzonej wiadomości e-mail w celu zalogowania się. | false |
RequireConfirmedPhoneNumber | Wymaga potwierdzonego numeru telefonu do zalogowania się. | false |
Tokeny
IdentityOptions.Tokens określa TokenOptions właściwość z właściwościami wyświetlanymi w tabeli.
Właściwości | opis |
---|---|
AuthenticatorTokenProvider | Pobiera lub ustawia AuthenticatorTokenProvider używane do weryfikowania logowania dwuskładnikowego przy użyciu wystawcy uwierzytelniającego. |
ChangeEmailTokenProvider | Pobiera lub ustawia ChangeEmailTokenProvider używane do generowania tokenów używanych w wiadomościach e-mail z potwierdzeniem zmiany wiadomości e-mail. |
ChangePhoneNumberTokenProvider | Pobiera lub ustawia ChangePhoneNumberTokenProvider używane do generowania tokenów używanych podczas zmieniania numerów telefonów. |
EmailConfirmationTokenProvider | Pobiera lub ustawia dostawcę tokenu używanego do generowania tokenów używanych w wiadomościach e-mail z potwierdzeniem konta. |
PasswordResetTokenProvider | Pobiera lub ustawia IUserTwoFactorTokenProvider<TUser> używane do generowania tokenów używanych w wiadomościach e-mail resetowania haseł. |
ProviderMap | Służy do konstruowania dostawcy tokenów użytkownika z kluczem używanym jako nazwa dostawcy. |
User
services.Configure<IdentityOptions>(options =>
{
// Default User settings.
options.User.AllowedUserNameCharacters =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
options.User.RequireUniqueEmail = false;
});
IdentityOptions.User określa UserOptions właściwość z właściwościami wyświetlanymi w tabeli.
Właściwości | opis | Wartość domyślna |
---|---|---|
AllowedUserNameCharacters | Dozwolone znaki w nazwie użytkownika. | abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 -._@+ |
RequireUniqueEmail | Wymaga, aby każdy użytkownik miał unikatową wiadomość e-mail. | false |
Ustawienia usługiCookie
Skonfiguruj aplikację cookie w programie Startup.ConfigureServices
. Polecenie ConfigureApplicationCookie musi być wywoływane po wywołaniu metody AddIdentity
lub AddDefaultIdentity
.
services.ConfigureApplicationCookie(options =>
{
options.AccessDeniedPath = "/Identity/Account/AccessDenied";
options.Cookie.Name = "YourAppCookieName";
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
options.LoginPath = "/Identity/Account/Login";
// ReturnUrlParameter requires
//using Microsoft.AspNetCore.Authentication.Cookies;
options.ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter;
options.SlidingExpiration = true;
});
Aby uzyskać więcej informacji, zobacz CookieAuthenticationOptions.
Opcje skrótów haseł
PasswordHasherOptions pobiera i ustawia opcje tworzenia skrótów haseł.
Opcja | Opis |
---|---|
CompatibilityMode | Tryb zgodności używany podczas tworzenia skrótów nowych haseł. Wartość domyślna to IdentityV3. Pierwszy bajt skrótu hasła, nazywany znacznikiem formatu, określa wersję algorytmu wyznaczania wartości skrótu używanej do wyznaczania wartości skrótu hasła. Podczas weryfikowania hasła względem skrótu VerifyHashedPassword metoda wybiera prawidłowy algorytm na podstawie pierwszego bajtu. Klient może uwierzytelnić się niezależnie od wersji algorytmu użytej do utworzenia skrótu hasła. Ustawienie trybu zgodności wpływa na tworzenie skrótów nowych haseł. |
IterationCount | Liczba iteracji używanych podczas tworzenia skrótów haseł przy użyciu pliku PBKDF2. Ta wartość jest używana tylko wtedy, gdy CompatibilityMode parametr ma wartość IdentityV3. Wartość musi być dodatnią liczbą całkowitą i wartością domyślną .10000 |
W poniższym przykładzie parametr IterationCount jest ustawiony na 12000
wartość w Startup.ConfigureServices
pliku :
// using Microsoft.AspNetCore.Identity;
services.Configure<PasswordHasherOptions>(option =>
{
option.IterationCount = 12000;
});
Globalnie wymaga uwierzytelnienia wszystkich użytkowników
Aby uzyskać informacje na temat globalnego wymagania uwierzytelnienia wszystkich użytkowników, zobacz Wymaganie uwierzytelnionych użytkowników.