Configure ASP.NET Core IdentityConfigure ASP.NET Core Identity

ASP.NET Core Identity 쿠키 설정, 암호 정책 및 잠금 시간 등의 설정에 대 한 기본 구성을 사용합니다.ASP.NET Core Identity uses default configuration for settings such as password policy, lockout time, and cookie settings. 이러한 설정은 응용 프로그램에서 재정의할 수 있습니다 Startup 클래스입니다.These settings can be overridden in the app's Startup class.

Id 옵션Identity options

IdentityOptions 클래스 Id 시스템을 구성 하는 데 사용할 수 있는 옵션을 나타냅니다.The IdentityOptions class represents the options that can be used to configure the Identity system.

클레임 IdClaims Identity

IdentityOptions.ClaimsIdentity 지정는 ClaimsIdentityOptions 표에 표시 된 속성을 사용 합니다.IdentityOptions.ClaimsIdentity specifies the ClaimsIdentityOptions with the properties shown in the table.

속성Property 설명Description 기본Default
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

지정된 된 수의 실패 한 액세스 시도 후 일정 시간 동안에 대 한 사용자 잠그는 (기본값: 5 액세스 시도 실패 한 후 5 분 잠금).Locks out the user for a period of time after a given number of failed access attempts (default: 5 minute lockout after 5 failed access attempts). 실패 한 액세스 시도 횟수를 다시 설정 하 고 클록을 기본값으로 다시 설정 하는 성공적으로 인증 합니다.A successful authentication resets the failed access attempts count and resets the clock.

다음 예에서는 기본값을 보여 줍니다.The following example shows the default values:

services.AddIdentity<ApplicationUser, IdentityRole>(options =>
    {
        // Lockout settings
        options.Lockout.AllowedForNewUsers = true;
        options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
        options.Lockout.MaxFailedAccessAttempts = 5; 
    })
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();

확인 PasswordSignInAsync 설정 lockoutOnFailuretrue:Confirm that PasswordSignInAsync sets lockoutOnFailure to true:

var result = await _signInManager.PasswordSignInAsync(
                 Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: true);

IdentityOptions.Lockout 지정는 LockoutOptions 표에 표시 된 속성을 사용 합니다.IdentityOptions.Lockout specifies the LockoutOptions with the properties shown in the table.

속성Property 설명Description 기본Default
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
MaxFailedAccessAttemptsMaxFailedAccessAttempts 실패 한 액세스 시도 사용자가 잠겨 될 때까지 잠금이 설정 된 경우.The number of failed access attempts until a user is locked out, if lockout is enabled. 55

암호Password

기본적으로 Id는 암호에 대문자, 소문자, 숫자 및 영숫자가 아닌 문자를 포함 필요 합니다.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. PasswordOptions 에서 변경할 수 있습니다 Startup.ConfigureServices합니다.PasswordOptions can be changed in Startup.ConfigureServices.

ASP.NET Core 추가 2.0는 RequiredUniqueChars 속성입니다.ASP.NET Core 2.0 added the RequiredUniqueChars property. 그렇지 않으면 옵션은 ASP.NET Core 동일 1.x 합니다.Otherwise, the options are the same as ASP.NET Core 1.x.

services.AddIdentity<ApplicationUser, IdentityRole>(options =>
    {
        // Password settings
        options.Password.RequireDigit = true;
        options.Password.RequiredLength = 8;
        options.Password.RequiredUniqueChars = 2;
        options.Password.RequireLowercase = true;
        options.Password.RequireNonAlphanumeric = true;
        options.Password.RequireUppercase = true;
    })
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();

IdentityOptions.Password 지정는 PasswordOptions 표에 표시 된 속성을 사용 합니다.IdentityOptions.Password specifies the PasswordOptions with the properties shown in the table.

속성Property 설명Description 기본Default
RequireDigitRequireDigit 암호에 0-9 사이의 숫자를 여야 합니다.Requires a number between 0-9 in the password. true
RequiredLengthRequiredLength 암호의 최소 길이입니다.The minimum length of the password. 66
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
RequireLowercaseRequireLowercase 암호에 소문자가 필요합니다.Requires a lowercase character in the password. true
RequireNonAlphanumericRequireNonAlphanumeric 암호에 영숫자가 아닌 문자가 필요합니다.Requires a non-alphanumeric character in the password. true
RequireUppercaseRequireUppercase 암호에 대문자가 필요합니다.Requires an uppercase character in the password. true

로그인Sign-in

services.AddIdentity<ApplicationUser, IdentityRole>(options =>
    {
        // Signin settings
        options.SignIn.RequireConfirmedEmail = true;
        options.SignIn.RequireConfirmedPhoneNumber = false;
    })
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();

IdentityOptions.SignIn 지정는 SignInOptions 표에 표시 된 속성을 사용 합니다.IdentityOptions.SignIn specifies the SignInOptions with the properties shown in the table.

속성Property 설명Description 기본Default
RequireConfirmedEmailRequireConfirmedEmail 확인 된 전자 메일에 로그인 할 필요 합니다.Requires a confirmed email to sign in. false
RequireConfirmedPhoneNumberRequireConfirmedPhoneNumber 로그인에 확인 된 전화 번호가 필요 합니다.Requires a confirmed phone number to sign in. false

토큰Tokens

IdentityOptions.Tokens 지정는 TokenOptions 표에 표시 된 속성을 사용 합니다.IdentityOptions.Tokens specifies the TokenOptions with the properties shown in the table.

속성Property 설명Description
AuthenticatorTokenProviderAuthenticatorTokenProvider 가져오거나는 AuthenticatorTokenProvider 인증자와 함께 다단계 로그인의 유효성을 검사 하는 데 사용 합니다.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 암호 재설정 전자 메일에 사용 되는 토큰을 생성 하는 데 사용 합니다.Gets or sets the IUserTwoFactorTokenProvider 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.

사용자User

services.AddIdentity<ApplicationUser, IdentityRole>(options =>
    {
        // User settings
        options.User.RequireUniqueEmail = true;
    })
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();

IdentityOptions.User 지정는 UserOptions 표에 표시 된 속성을 사용 합니다.IdentityOptions.User specifies the UserOptions with the properties shown in the table.

속성Property 설명Description 기본Default
AllowedUserNameCharactersAllowedUserNameCharacters 사용자 이름에 허용된 되는 문자입니다.Allowed characters in the username. abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ
01234567890123456789
-.@+-.@+
RequireUniqueEmailRequireUniqueEmail 각 사용자에 게 고유한 전자 메일 필요 합니다.Requires each user to have a unique email. false

구성에서 응용 프로그램의 쿠키 Startup.ConfigureServices:Configure the app's cookie in Startup.ConfigureServices:

services.ConfigureApplicationCookie(options =>
{
    options.AccessDeniedPath = "/Account/AccessDenied";
    options.Cookie.Name = "YourAppCookieName";
    options.Cookie.HttpOnly = true; 
    options.ExpireTimeSpan = TimeSpan.FromMinutes(60); 
    options.LoginPath = "/Account/Login";
    // ReturnUrlParameter requires `using Microsoft.AspNetCore.Authentication.Cookies;`
    options.ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter;
    options.SlidingExpiration = true;
});

CookieAuthenticationOptions 속성은 다음과 같습니다.CookieAuthenticationOptions has the following properties:

속성Property 설명Description
AccessDeniedPathAccessDeniedPath 처리기에 나가는 변경 해야 함을 알립니다 403 사용할 수 없음 에 상태 코드는 302 리디렉션 지정된 된 경로에 있습니다.Informs the handler that it should change an outgoing 403 Forbidden status code into a 302 Redirect onto the given path.

기본값은 /Account/AccessDenied입니다.The default value is /Account/AccessDenied.
AuthenticationSchemeAuthenticationScheme ASP.NET Core에만 적용 됩니다 1.x 합니다.Only applies to ASP.NET Core 1.x.

특정 인증 체계에 대 한 논리적 이름입니다.The logical name for a particular authentication scheme.
AutomaticAuthenticateAutomaticAuthenticate ASP.NET Core에만 적용 됩니다 1.x 합니다.Only applies to ASP.NET Core 1.x.

True 인 경우 쿠키 인증 모든 요청에서 실행 하 고 유효성 검사 하 고 자신이 만든 직렬화 된 모든 보안 주체를 다시 생성 해야 합니다.When true, cookie authentication should run on every request and attempt to validate and reconstruct any serialized principal it created.
AutomaticChallengeAutomaticChallenge ASP.NET Core에만 적용 됩니다 1.x 합니다.Only applies to ASP.NET Core 1.x.

True 이면 인증 미들웨어 자동 문제를 처리 합니다.If true, the authentication middleware handles automatic challenges. 경우 false 이면 인증 미들웨어만 변경 하 여 명시적으로 지정 하는 경우 응답은 AuthenticationScheme합니다.If false, the authentication middleware only alters responses when explicitly indicated by the AuthenticationScheme.
ClaimsIssuerClaimsIssuer 생성 되는 모든 클레임을 사용 해야 하는 발급자를 가져오거나 설정 합니다. (에서 상속 되며, AuthenticationSchemeOptions).Gets or sets the issuer that should be used for any claims that are created (inherited from AuthenticationSchemeOptions).
Cookie.DomainCookie.Domain 쿠키와 연결할 도메인입니다.The domain to associate the cookie with.
Cookie.ExpirationCookie.Expiration HTTP 쿠키 (인증 쿠키 제외)의 수명을 가져오거나 설정 합니다.Gets or sets the lifespan of the HTTP cookie (not the authentication cookie). 이 속성을 재정의 하 여 ExpireTimeSpan합니다.This property is overridden by ExpireTimeSpan. CookieAuthentication의 컨텍스트에서 사용할 수 없습니다.It shouldn't be used in the context of CookieAuthentication.
Cookie.HttpOnlyCookie.HttpOnly 쿠키는 클라이언트 쪽 스크립트에서 액세스할 수 있는지 여부를 나타냅니다.Indicates whether a cookie is accessible by client-side script.

기본값은 true입니다.The default value is true.
Cookie.NameCookie.Name 쿠키의 이름입니다.The name of the cookie.

기본값은 .AspNetCore.Cookies입니다.The default value is .AspNetCore.Cookies.
Cookie.PathCookie.Path 쿠키 경로입니다.The cookie path.
Cookie.SameSiteCookie.SameSite SameSite 쿠키의 특성입니다.The SameSite attribute of the cookie.

기본값은 SameSiteMode.Lax합니다.The default value is SameSiteMode.Lax.
Cookie.SecurePolicyCookie.SecurePolicy CookieSecurePolicy 구성 합니다.The CookieSecurePolicy configuration.

기본값은 CookieSecurePolicy.SameAsRequest합니다.The default value is CookieSecurePolicy.SameAsRequest.
CookieDomainCookieDomain ASP.NET Core에만 적용 됩니다 1.x 합니다.Only applies to ASP.NET Core 1.x.

쿠키 처리 되는 도메인 이름입니다.The domain name where the cookie is served.
CookieHttpOnlyCookieHttpOnly ASP.NET Core에만 적용 됩니다 1.x 합니다.Only applies to ASP.NET Core 1.x.

쿠키를 서버에만 액세스할 수 있어야 하는 경우를 나타내는 플래그입니다.A flag indicating if the cookie should be accessible only to servers.

기본값은 true입니다.The default value is true.
CookiePathCookiePath ASP.NET Core에만 적용 됩니다 1.x 합니다.Only applies to ASP.NET Core 1.x.

동일한 호스트 이름에서 실행 되는 앱을 격리 하는 데 사용 합니다.Used to isolate apps running on the same host name.
CookieSecureCookieSecure ASP.NET Core에만 적용 됩니다 1.x 합니다.Only applies to ASP.NET Core 1.x.

만든 쿠키를 HTTPS로 제한 해야 하는 경우를 나타내는 플래그 (CookieSecurePolicy.Always), HTTP 또는 HTTPS (CookieSecurePolicy.None), 또는 요청와 동일한 프로토콜 (CookieSecurePolicy.SameAsRequest).A flag indicating if the cookie created should be limited to HTTPS (CookieSecurePolicy.Always), HTTP or HTTPS (CookieSecurePolicy.None), or the same protocol as the request (CookieSecurePolicy.SameAsRequest).

기본값은 CookieSecurePolicy.SameAsRequest입니다.The default value is CookieSecurePolicy.SameAsRequest.
CookieManagerCookieManager 요청에서 쿠키를 가져오거나 응답에서 속성을 설정 하는 데 사용 하는 구성 요소입니다.The component used to get cookies from the request or set them on the response.
DataProtectionProviderDataProtectionProvider 으로 설정한 공급자 사용 하 여는 CookieAuthenticationHandler 데이터를 보호 합니다.If set, the provider used by the CookieAuthenticationHandler for data protection.
설명Description ASP.NET Core에만 적용 됩니다 1.x 합니다.Only applies to ASP.NET Core 1.x.

응용 프로그램에 사용할 수 있는 인증 형식에 대 한 추가 정보입니다.Additional information about the authentication type which is made available to the app.
이벤트Events 처리기는 처리가 발생 하는 특정 시점에서 응용 프로그램 컨트롤을 제공 하는 공급자에 메서드를 호출 합니다.The handler calls methods on the provider which give the app control at certain points where processing is occurring.
EventsTypeEventsType 설정, 서비스 입력 가져오려는 Events 속성 대신 인스턴스 (에서 상속 되며, AuthenticationSchemeOptions).If set, the service type to get the Events instance instead of the property (inherited from AuthenticationSchemeOptions).
ExpireTimeSpanExpireTimeSpan 얼마나 때 만들어진 시점부터 유효 쿠키 유지에 저장 된 인증 티켓을 제어 합니다.Controls how much time the authentication ticket stored in the cookie remains valid from the point it's created.

기본값은 14 일입니다.The default value is 14 days.
LoginPathLoginPath 사용자 권한이 없는 경우 로그인에이 경로 리디렉션됩니다 하 합니다.When a user is unauthorized, they're redirected to this path to login.

기본값은 /Account/Login입니다.The default value is /Account/Login.
LogoutPathLogoutPath 사용자가 로그 아웃,이 경로에 리디렉션됩니다 하 합니다.When a user is logged out, they're redirected to this path.

기본값은 /Account/Logout입니다.The default value is /Account/Logout.
ReturnUrlParameterReturnUrlParameter 미들웨어에서 추가 되는 쿼리 문자열 매개 변수의 이름을 결정 때는 401 권한 없음 으로 변경 된 상태 코드는 302 리디렉션 로그인 경로로 합니다.Determines the name of the query string parameter which is appended by the middleware when a 401 Unauthorized status code is changed to a 302 Redirect onto the login path.

기본값은 ReturnUrl입니다.The default value is ReturnUrl.
SessionStoreSessionStore 요청 간에 id를 저장할 선택적 컨테이너입니다.An optional container in which to store the identity across requests.
SlidingExpirationSlidingExpiration True 인 경우 새 만료 시간 현재 쿠키 만료 창을 통해 중간 부분 이상으로 새 쿠키를 발급 됩니다.When true, a new cookie is issued with a new expiration time when the current cookie is more than halfway through the expiration window.

기본값은 true입니다.The default value is true.
TicketDataFormatTicketDataFormat TicketDataFormat 보호 및 id 및 쿠키 값에 저장 되는 기타 속성을 보호 해제 하는 데 사용 됩니다.The TicketDataFormat is used to protect and unprotect the identity and other properties which are stored in the cookie value.