Id 구성Configure Identity

ASP.NET Core Id 암호 정책, 잠금 시간 및 응용 프로그램에서 쉽게 재정의할 수 있는 쿠키 설정 등의 응용 프로그램에 대 한 일반적인 동작 Startup 클래스입니다.ASP.NET Core Identity has common behaviors in applications such as password policy, lockout time, and cookie settings that you can override easily in your application's Startup class.

암호 정책Passwords policy

기본적으로 Id는 암호에 대문자, 소문자, 숫자 및 영숫자가 아닌 문자를 포함 필요 합니다.By default, Identity requires that passwords contain an uppercase character, lowercase character, a digit, and a non-alphanumeric character. 몇 가지 제한 사항이 있습니다.There are also some other restrictions. 암호 제한을 간단 하 게 하려면 수정 하는 ConfigureServices 의 메서드는 Startup 응용 프로그램의 클래스.To simplify password restrictions, modify the ConfigureServices method of the Startup class of your application.

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 from ASP.NET Core 1.x.

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

IdentityOptions.Password에 다음과 같은 속성이 있습니다.IdentityOptions.Password has the following properties:

속성Property 설명Description 기본Default
RequireDigit 암호에 0-9 사이의 숫자를 여야 합니다.Requires a number between 0-9 in the password. truetrue
RequiredLength 암호의 최소 길이입니다.The minimum length of the password. 66
RequireNonAlphanumeric 암호에 영숫자가 아닌 문자가 필요합니다.Requires a non-alphanumeric character in the password. truetrue
RequireUppercase 암호에는 대문자 문자가 필요합니다.Requires an upper case character in the password. truetrue
RequireLowercase 암호에 소문자 문자가 필요합니다.Requires a lower case character in the password. truetrue
RequiredUniqueChars 암호에 고유한 문자 수가 필요합니다.Requires the number of distinct characters in the password. 11

사용자의 잠금User's lockout

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

IdentityOptions.Lockout에 다음과 같은 속성이 있습니다.IdentityOptions.Lockout has the following properties:

속성Property 설명Description 기본Default
DefaultLockoutTimeSpan 시간의 양은 사용자가 잠겨 잠금이 발생 합니다.The amount of time a user is locked out when a lockout occurs. 5 분5 minutes
MaxFailedAccessAttempts 실패 한 액세스 시도 사용자가 잠겨 될 때까지 잠금이 설정 된 경우.The number of failed access attempts until a user is locked out, if lockout is enabled. 55
AllowedForNewUsers 하는 경우 새 사용자를 잠글 수를 결정 합니다.Determines if a new user can be locked out. truetrue

로그인 설정Sign in settings

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

IdentityOptions.SignIn에 다음과 같은 속성이 있습니다.IdentityOptions.SignIn has the following properties:

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

사용자 유효성 검사 설정User validation settings

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

IdentityOptions.User에 다음과 같은 속성이 있습니다.IdentityOptions.User has the following properties:

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

암호 정책와 같은 응용 프로그램의 쿠키의 모든 설정에서 변경할 수 있습니다는 Startup 클래스입니다.Like the passwords policy, all the settings of the application's cookie can be changed in the Startup class.

아래 ConfigureServicesStartup 클래스, 응용 프로그램의 쿠키를 구성할 수 있습니다.Under ConfigureServices in the Startup class, you can configure the application's cookie.

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

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

속성Property 설명Description 기본Default
Cookie.Name 쿠키의 이름입니다.The name of the cookie. .AspNetCore.Cookies..AspNetCore.Cookies.
Cookie.HttpOnly True 인 경우 쿠키는 클라이언트 쪽 스크립트에서 액세스할 수 없습니다.When true, the cookie isn't accessible from client-side scripts. truetrue
ExpireTimeSpan 쿠키에 저장 된 인증 티켓 시간 유효 하 게 유지에서 만들어진 시점을 제어 합니다.Controls how much time the authentication ticket stored in the cookie will remain valid from the point it's created. 14 일14 days
LoginPath 사용자 권한이 없는 경우 로그인에이 경로로 이동 합니다.When a user is unauthorized, they will be redirected to this path to login. / 계정/로그인/Account/Login
LogoutPath 사용자 로그 아웃 하는 경우이 경로로 이동 합니다.When a user is logged out, they will be redirected to this path. /Account/Logout/Account/Logout
AccessDeniedPath 사용자 권한 확인에 실패 하면이 경로로 이동 합니다.When a user fails an authorization check, they will be redirected to this path.
SlidingExpiration True 인 경우 새 만료 시간 현재 쿠키 만료 창을 통해 중간 부분 이상으로 새로운 쿠키를 발급 합니다.When true, a new cookie will be issued with a new expiration time when the current cookie is more than halfway through the expiration window. /Account/AccessDenied/Account/AccessDenied
ReturnUrlParameter 미들웨어는 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. truetrue
AuthenticationScheme 이 ASP.NET Core에 대 한 관련만 1.x 합니다.This is only relevant for ASP.NET Core 1.x. 특정 인증 체계에 대 한 논리적 이름입니다.The logical name for a particular authentication scheme.
AutomaticAuthenticate 이 플래그는 ASP.NET Core에 대 한 관련만 1.x 합니다.This flag is only relevant for 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.