Configurer ASP.NET CoreIdentityConfigure ASP.NET Core Identity

ASP.NET Core Identity utilise les valeurs par défaut pour les paramètres tels que la stratégie de mot de passe, le verrouillage et la configuration des cookies.ASP.NET Core Identity uses default values for settings such as password policy, lockout, and cookie configuration. Ces paramètres peuvent être remplacés dans la Startup classe.These settings can be overridden in the Startup class.

IdentityOptionsIdentity options

La classe Identity options représente les options qui peuvent être utilisées pour configurer le Identity système.The IdentityOptions class represents the options that can be used to configure the Identity system. IdentityOptionsdoit être défini après l’appel AddIdentity de ou de AddDefaultIdentity .IdentityOptions must be set after calling AddIdentity or AddDefaultIdentity.

LégitimitéIdentityClaims Identity

Identity Options. les Identity revendications spécifient les Identity options de revendications avec les propriétés indiquées dans le tableau suivant.IdentityOptions.ClaimsIdentity specifies the ClaimsIdentityOptions with the properties shown in the following table.

PropriétéProperty DescriptionDescription DefaultDefault
RoleClaimTypeRoleClaimType Obtient ou définit le type de revendication utilisé pour une revendication de rôle.Gets or sets the claim type used for a role claim. ClaimTypes. RoleClaimTypes.Role
SecurityStampClaimTypeSecurityStampClaimType Obtient ou définit le type de revendication utilisé pour la revendication de cachet de sécurité.Gets or sets the claim type used for the security stamp claim. AspNet.Identity.SecurityStamp
UserIdClaimTypeUserIdClaimType Obtient ou définit le type de revendication utilisé pour la revendication de l’identificateur d’utilisateur.Gets or sets the claim type used for the user identifier claim. ClaimTypes. NameIdentifierClaimTypes.NameIdentifier
UserNameClaimTypeUserNameClaimType Obtient ou définit le type de revendication utilisé pour la revendication de nom d’utilisateur.Gets or sets the claim type used for the user name claim. ClaimTypes.NameClaimTypes.Name

Verrouillage.Lockout

Le verrouillage est défini dans la méthode PasswordSignInAsync :Lockout is set in the PasswordSignInAsync method:

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();
}

Le code précédent est basé sur le Login Identity modèle.The preceding code is based on the Login Identity template.

Les options de verrouillage sont définies dans StartUp.ConfigureServices :Lockout options are set in StartUp.ConfigureServices:

services.Configure<IdentityOptions>(options =>
{
    // Default Lockout settings.
    options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
    options.Lockout.MaxFailedAccessAttempts = 5;
    options.Lockout.AllowedForNewUsers = true;
});

Le code précédent définit les Identity options LockoutOptions avec les valeurs par défaut.The preceding code sets the IdentityOptions LockoutOptions with default values.

Une authentification réussie réinitialise le nombre d’échecs de tentatives d’accès et réinitialise l’horloge.A successful authentication resets the failed access attempts count and resets the clock.

Identity Options. le verrouillage spécifie le LockoutOptions avec les propriétés affichées dans le tableau.IdentityOptions.Lockout specifies the LockoutOptions with the properties shown in the table.

PropriétéProperty DescriptionDescription DefaultDefault
AllowedForNewUsersAllowedForNewUsers Détermine si un nouvel utilisateur peut être verrouillé.Determines if a new user can be locked out. true
DefaultLockoutTimeSpanDefaultLockoutTimeSpan Durée pendant laquelle un utilisateur est verrouillé lorsqu’un verrouillage se produit.The amount of time a user is locked out when a lockout occurs. 5 minutes5 minutes
MaxFailedAccessAttemptsMaxFailedAccessAttempts Nombre d’échecs de tentative d’accès jusqu’à ce qu’un utilisateur soit verrouillé, si le verrouillage est activé.The number of failed access attempts until a user is locked out, if lockout is enabled. 55

Mot de passePassword

Par défaut, Identity exige que les mots de passe contiennent un caractère majuscule, un caractère minuscule, un chiffre et un caractère non alphanumérique.By default, Identity requires that passwords contain an uppercase character, lowercase character, a digit, and a non-alphanumeric character. Les mots de passe doivent comporter au moins six caractères.Passwords must be at least six characters long.

Les mots de passe sont configurés avec :Passwords are configured with:

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;
});

Identity Options. Password spécifie le PasswordOptions avec les propriétés indiquées dans le tableau.IdentityOptions.Password specifies the PasswordOptions with the properties shown in the table.

PropriétéProperty DescriptionDescription DefaultDefault
RequireDigitRequireDigit Requiert un nombre compris entre 0-9 dans le mot de passe.Requires a number between 0-9 in the password. true
RequiredLengthRequiredLength Longueur minimale du mot de passe.The minimum length of the password. 66
RequireLowercaseRequireLowercase Requiert un caractère minuscule dans le mot de passe.Requires a lowercase character in the password. true
RequireNonAlphanumericRequireNonAlphanumeric Requiert un caractère non alphanumérique dans le mot de passe.Requires a non-alphanumeric character in the password. true
RequiredUniqueCharsRequiredUniqueChars S’applique uniquement à ASP.NET Core 2,0 ou version ultérieure.Only applies to ASP.NET Core 2.0 or later.

Requiert le nombre de caractères distincts dans le mot de passe.Requires the number of distinct characters in the password.
11
RequireUppercaseRequireUppercase Requiert un caractère majuscule dans le mot de passe.Requires an uppercase character in the password. true

ConnexionSign-in

Le code suivant définit les SignIn paramètres (aux valeurs par défaut) :The following code sets SignIn settings (to default values):

services.Configure<IdentityOptions>(options =>
{
    // Default SignIn settings.
    options.SignIn.RequireConfirmedEmail = false;
    options.SignIn.RequireConfirmedPhoneNumber = false;
});

Identity Options. Signy spécifie le SignInOptions avec les propriétés affichées dans le tableau.IdentityOptions.SignIn specifies the SignInOptions with the properties shown in the table.

PropriétéProperty DescriptionDescription DefaultDefault
RequireConfirmedEmailRequireConfirmedEmail Requiert un e-mail confirmé pour la connexion.Requires a confirmed email to sign in. false
RequireConfirmedPhoneNumberRequireConfirmedPhoneNumber Nécessite un numéro de téléphone confirmé pour la connexion.Requires a confirmed phone number to sign in. false

JetonsTokens

Identity Options. Tokens spécifie le TokenOptions avec les propriétés affichées dans le tableau.IdentityOptions.Tokens specifies the TokenOptions with the properties shown in the table.

PropriétéProperty DescriptionDescription
AuthenticatorTokenProviderAuthenticatorTokenProvider Obtient ou définit le AuthenticatorTokenProvider utilisé pour valider les connexions à deux facteurs avec un authentificateur.Gets or sets the AuthenticatorTokenProvider used to validate two-factor sign-ins with an authenticator.
ChangeEmailTokenProviderChangeEmailTokenProvider Obtient ou définit le ChangeEmailTokenProvider utilisé pour générer les jetons utilisés dans les e-mails de confirmation de modification de courrier électronique.Gets or sets the ChangeEmailTokenProvider used to generate tokens used in email change confirmation emails.
ChangePhoneNumberTokenProviderChangePhoneNumberTokenProvider Obtient ou définit le ChangePhoneNumberTokenProvider utilisé pour générer les jetons utilisés lors de la modification des numéros de téléphone.Gets or sets the ChangePhoneNumberTokenProvider used to generate tokens used when changing phone numbers.
EmailConfirmationTokenProviderEmailConfirmationTokenProvider Obtient ou définit le fournisseur de jetons utilisé pour générer les jetons utilisés dans les e-mails de confirmation de compte.Gets or sets the token provider used to generate tokens used in account confirmation emails.
PasswordResetTokenProviderPasswordResetTokenProvider Obtient ou définit le IUserTwoFactorTokenProvider <TUser> utilisé pour générer les jetons utilisés dans les courriers électroniques de réinitialisation de mot de passe.Gets or sets the IUserTwoFactorTokenProvider<TUser> used to generate tokens used in password reset emails.
ProviderMapProviderMap Utilisé pour construire un fournisseur de jetons utilisateur avec la clé utilisée comme nom du fournisseur.Used to construct a User Token Provider with the key used as the provider's name.

UtilisateurUser

services.Configure<IdentityOptions>(options =>
{
    // Default User settings.
    options.User.AllowedUserNameCharacters =
            "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
    options.User.RequireUniqueEmail = false;

});

Identity Options. User spécifie l' UserOptions avec les propriétés affichées dans le tableau.IdentityOptions.User specifies the UserOptions with the properties shown in the table.

PropriétéProperty DescriptionDescription DefaultDefault
AllowedUserNameCharactersAllowedUserNameCharacters Caractères autorisés dans le nom d’utilisateur.Allowed characters in the username. abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
01234567890123456789
-._@+-._@+
RequireUniqueEmailRequireUniqueEmail Nécessite que chaque utilisateur dispose d’un e-mail unique.Requires each user to have a unique email. false

Configurez le cookie de l’application dans Startup.ConfigureServices .Configure the app's cookie in Startup.ConfigureServices. ConfigureApplicationCookie doit être appelé après l’appel AddIdentity de ou de AddDefaultIdentity .ConfigureApplicationCookie must be called after calling AddIdentity or 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;
});

Pour plus d’informations, consultez CookieAuthenticationOptions.For more information, see CookieAuthenticationOptions.

Options de hachage de mot de passePassword Hasher options

PasswordHasherOptionsObtient et définit les options de hachage de mot de passe.PasswordHasherOptions gets and sets options for password hashing.

OptionOption DescriptionDescription
CompatibilityMode Mode de compatibilité utilisé lors du hachage de nouveaux mots de passe.The compatibility mode used when hashing new passwords. La valeur par défaut est IdentityV3.Defaults to IdentityV3. Le premier octet d’un mot de passe haché, appelé marqueur de format, spécifie la version de l’algorithme de hachage utilisé pour hacher le mot de passe.The first byte of a hashed password, called a format marker, specifies the version of the hashing algorithm used to hash the password. Lors de la vérification d’un mot de passe par rapport à un hachage, la VerifyHashedPassword méthode sélectionne l’algorithme approprié en fonction du premier octet.When verifying a password against a hash, the VerifyHashedPassword method selects the correct algorithm based on the first byte. Un client est en mesure de s’authentifier, quelle que soit la version de l’algorithme utilisée pour hacher le mot de passe.A client is able to authenticate regardless of which version of the algorithm was used to hash the password. La définition du mode de compatibilité affecte le hachage de nouveaux mots de passe.Setting the compatibility mode affects the hashing of new passwords.
IterationCount Nombre d’itérations utilisées pour hacher les mots de passe à l’aide de PBKDF2.The number of iterations used when hashing passwords using PBKDF2. Cette valeur est utilisée uniquement lorsque CompatibilityMode a la valeur IdentityV3 .This value is only used when the CompatibilityMode is set to IdentityV3. La valeur doit être un entier positif et la valeur par défaut est 10000 .The value must be a positive integer and defaults to 10000.

Dans l’exemple suivant, IterationCount a la valeur 12000 dans Startup.ConfigureServices :In the following example, the IterationCount is set to 12000 in Startup.ConfigureServices:

// using Microsoft.AspNetCore.Identity;

services.Configure<PasswordHasherOptions>(option =>
{
    option.IterationCount = 12000;
});

Exiger que tous les utilisateurs soient authentifiés globalementGlobally require all users to be authenticated

Pour plus d’informations sur la façon d’exiger l’authentification globale de tous les utilisateurs, consultez exiger des utilisateurs authentifiés.For information on how to globally require all users to be authenticated, see Require authenticated users.