ASP.NET Core Identity を構成するConfigure ASP.NET Core Identity

ASP.NET Core Identity では、パスワードポリシー、ロックアウト、構成などの設定に既定値が使用さ cookie れます。ASP.NET Core Identity uses default values for settings such as password policy, lockout, and cookie configuration. これらの設定は、クラスでオーバーライドでき Startup ます。These settings can be overridden in the Startup class.

Identity オプションIdentity options

Identity Optionsクラスは、システムの構成に使用できるオプションを表し Identity ます。The IdentityOptions class represents the options that can be used to configure the Identity system. IdentityOptions またはを呼び出し た後 に設定する必要があり AddIdentity AddDefaultIdentity ます。IdentityOptions must be set after calling AddIdentity or AddDefaultIdentity.

保険 IdentityClaims Identity

Identity オプション。クレーム Identity は、次の表に示すプロパティを使用して要求 Identity オプションを指定します。IdentityOptions.ClaimsIdentity specifies the ClaimsIdentityOptions with the properties shown in the following table.

プロパティProperty 説明Description DefaultDefault
RoleClaimTypeRoleClaimType ロール要求に使用されるクレームの種類を取得または設定します。Gets or sets the claim type used for a role claim. ClaimTypes。 RoleClaimTypes.Role
SecurityStampClaimTypeSecurityStampClaimType セキュリティスタンプ要求に使用される要求の種類を取得または設定します。Gets or sets the claim type used for the security stamp claim. AspNet.Identity.SecurityStamp
UserIdClaimTypeUserIdClaimType ユーザー識別子要求に使用されるクレームの種類を取得または設定します。Gets or sets the claim type used for the user identifier claim. ClaimTypes. NameIdentifierClaimTypes.NameIdentifier
UserNameClaimTypeUserNameClaimType ユーザー名要求に使用される要求の種類を取得または設定します。Gets or sets the claim type used for the user name claim. ClaimTypes.NameClaimTypes.Name

ロックアウトLockout

ロックアウトは、 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();
}

上記のコードは、テンプレートに基づいてい Login Identity ます。The preceding code is based on the Login Identity template.

ロックアウトオプションは、次の方法で設定され 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;
});

上記のコードでは、 Identity オプション LockoutOptionsが既定値で設定されています。The preceding code sets the IdentityOptions LockoutOptions with default values.

認証が成功すると、失敗したアクセス試行回数がリセットされ、時計がリセットされます。A successful authentication resets the failed access attempts count and resets the clock.

LockoutOptionsは、テーブルに示されているプロパティを使用して、指定したプロパティを使用し Identity ます。IdentityOptions.Lockout specifies the LockoutOptions with the properties shown in the table.

プロパティProperty 説明Description DefaultDefault
AllowedForNewUsersAllowedForNewUsers 新しいユーザーをロックアウトできるかどうかを決定します。Determines if a new user can be locked out. true
DefaultLockoutTimeSpanDefaultLockoutTimeSpan ロックアウトが発生したときにユーザーがロックアウトされる時間。The amount of time a user is locked out when a lockout occurs. 5 分5 minutes
Max失敗した AccessattemptsMaxFailedAccessAttempts ロックアウトが有効になっている場合に、ユーザーがロックアウトされるまでのアクセス試行の失敗回数。The number of failed access attempts until a user is locked out, if lockout is enabled. 55

PasswordPassword

既定では、 Identity パスワードの大文字と小文字、数字、英数字以外の文字を使用する必要があります。By default, Identity requires that passwords contain an uppercase character, lowercase character, a digit, and a non-alphanumeric character. パスワードの長さは6文字以上である必要があります。Passwords must be at least six characters long.

パスワードは次のように構成されます。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;
});

PasswordOptionsテーブルに表示されるプロパティを使用して、[パスワード] を指定し Identity ます。IdentityOptions.Password specifies the PasswordOptions with the properties shown in the table.

プロパティProperty 説明Description DefaultDefault
RequireDigitRequireDigit では、パスワードに0-9 を指定する必要があります。Requires a number between 0-9 in the password. true
RequiredLengthRequiredLength パスワードの最小長。The minimum length of the password. 66
RequireLowercase 文字RequireLowercase パスワードに小文字が必要です。Requires a lowercase character in the password. true
RequireNonAlphanumericRequireNonAlphanumeric パスワードには英数字以外の文字が必要です。Requires a non-alphanumeric character in the password. true
RequiredUniqueCharsRequiredUniqueChars ASP.NET Core 2.0 以降にのみ適用されます。Only applies to ASP.NET Core 2.0 or later.

パスワードに含まれる個別の文字数が必要です。Requires the number of distinct characters in the password.
11
RequireUppercaseRequireUppercase パスワードには大文字が必要です。Requires an uppercase character in the password. true

サインインSign-in

次のコードは、 SignIn 設定 (既定値) を設定します。The following code sets SignIn settings (to default values):

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

SignInOptionsは、表に示されているプロパティを使用して、指定し Identity ます。IdentityOptions.SignIn specifies the SignInOptions with the properties shown in the table.

プロパティProperty 説明Description DefaultDefault
RequireConfirmedEmailRequireConfirmedEmail サインインするには、確認済みの電子メールが必要です。Requires a confirmed email to sign in. false
RequireConfirmedPhoneNumberRequireConfirmedPhoneNumber サインインするには、確認済みの電話番号が必要です。Requires a confirmed phone number to sign in. false

トークンTokens

Identity オプション。トークンは、テーブルに示されているプロパティを使用してtokenoptionsを指定します。IdentityOptions.Tokens specifies the TokenOptions with the properties shown in the table.

プロパティProperty [説明]Description
AuthenticatorTokenProviderAuthenticatorTokenProvider AuthenticatorTokenProvider認証子を使用して2要素サインインを検証するために使用するを取得または設定します。Gets or sets the AuthenticatorTokenProvider used to validate two-factor sign-ins with an authenticator.
ChangeEmailTokenProviderChangeEmailTokenProvider ChangeEmailTokenProvider電子メール変更の確認メールで使用されるトークンを生成するために使用されるを取得または設定します。Gets or sets the ChangeEmailTokenProvider used to generate tokens used in email change confirmation emails.
ChangePhoneNumberTokenProviderChangePhoneNumberTokenProvider ChangePhoneNumberTokenProvider電話番号を変更するときに使用するトークンを生成するために使用するを取得または設定します。Gets or sets the ChangePhoneNumberTokenProvider used to generate tokens used when changing phone numbers.
EmailConfirmationTokenProviderEmailConfirmationTokenProvider アカウントの確認メールで使用されるトークンを生成するために使用されるトークンプロバイダーを取得または設定します。Gets or sets the token provider used to generate tokens used in account confirmation emails.
PasswordResetTokenProviderPasswordResetTokenProvider パスワードリセット電子メールで使用されるトークンを生成するために使用されるIUserTwoFactorTokenProvider <TUser> を取得または設定します。Gets or sets the IUserTwoFactorTokenProvider<TUser> used to generate tokens used in password reset emails.
ProviderMapProviderMap プロバイダーの名前として使用されるキーを使用して ユーザートークンプロバイダー を構築するために使用されます。Used to construct a User Token Provider with the key used as the provider's name.

UserUser

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

});

Identity オプション。 userは、テーブルに示されているプロパティを使用してuseroptionsを指定します。IdentityOptions.User specifies the UserOptions with the properties shown in the table.

プロパティProperty 説明Description DefaultDefault
AllowedUserNameCharactersAllowedUserNameCharacters ユーザー名に使用できる文字。Allowed characters in the username. abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
01234567890123456789
-._@+-._@+
RequireUniqueEmailRequireUniqueEmail 各ユーザーが一意の電子メールを持っている必要があります。Requires each user to have a unique email. false

Cookie の設定Cookie settings

アプリの cookie をで構成し Startup.ConfigureServices ます。Configure the app's cookie in Startup.ConfigureServices. ConfigureApplication Cookieまたはを呼び出し た後 に、を呼び出す必要があり AddIdentity 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;
});

詳細については、「 Cookie authenticationoptions」を参照してください。For more information, see CookieAuthenticationOptions.

パスワードの Hasher オプションPassword Hasher options

PasswordHasherOptions パスワードハッシュのオプションを取得または設定します。PasswordHasherOptions gets and sets options for password hashing.

オプションOption [説明]Description
CompatibilityMode 新しいパスワードをハッシュするときに使用する互換性モード。The compatibility mode used when hashing new passwords. 既定値は IdentityV3 です。Defaults to IdentityV3. 形式マーカー と呼ばれるハッシュされたパスワードの最初のバイトは、パスワードのハッシュに使用されるハッシュアルゴリズムのバージョンを指定します。The first byte of a hashed password, called a format marker , specifies the version of the hashing algorithm used to hash the password. ハッシュに対してパスワードを確認する場合、 VerifyHashedPassword メソッドは最初のバイトに基づいて適切なアルゴリズムを選択します。When verifying a password against a hash, the VerifyHashedPassword method selects the correct algorithm based on the first byte. クライアントは、パスワードのハッシュに使用されたアルゴリズムのバージョンに関係なく認証を行うことができます。A client is able to authenticate regardless of which version of the algorithm was used to hash the password. 互換性モードを設定すると、 新しいパスワード のハッシュに影響します。Setting the compatibility mode affects the hashing of new passwords .
IterationCount PBKDF2 を使用してパスワードをハッシュするときに使用されるイテレーションの数。The number of iterations used when hashing passwords using PBKDF2. この値は、がに設定されている場合にのみ使用され CompatibilityMode IdentityV3 ます。This value is only used when the CompatibilityMode is set to IdentityV3. 値は正の整数である必要があり、既定値は 10000 です。The value must be a positive integer and defaults to 10000.

次の例では、 IterationCount がのに設定されてい 12000 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;
});

すべてのユーザーをグローバルに認証する必要がありますGlobally require all users to be authenticated

すべてのユーザーの認証をグローバルに要求する方法の詳細については、「認証されたユーザーを要求する」を参照してください。For information on how to globally require all users to be authenticated, see Require authenticated users.