Id 구성Configure Identity

ASP.NET Core Id 된 응용 프로그램에서 쉽게 재정의할 수 있는 몇 가지 기본 동작이 Startup 클래스입니다.ASP.NET Core Identity has some default behaviors 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 an alphanumeric character. 몇 가지 제한 사항이 있습니다.There are also some other restrictions. 암호 제한 간소화 하려는 경우 있습니다에서 이렇게 할 수는 Startup 응용 프로그램의 클래스입니다.If you want to simplify password restrictions, you can do that in 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:

  • RequireDigit: 암호에 0-9 사이의 숫자를 여야 합니다.RequireDigit: Requires a number between 0-9 in the password. 기본값은 true입니다.Defaults to true.
  • RequiredLength암호의: 최소 길이입니다.RequiredLength: The minimum length of the password. 기본값은 6입니다.Defaults to 6.
  • RequireNonAlphanumeric: 암호에는 영숫자가 아닌 문자가 필요합니다.RequireNonAlphanumeric: Requires a non-alphanumeric character in the password. 기본값은 true입니다.Defaults to true.
  • RequireUppercase: 암호에는 대문자 문자가 필요합니다.RequireUppercase: Requires an upper case character in the password. 기본값은 true입니다.Defaults to true.
  • RequireLowercase: 암호에는 소문자 문자가 필요합니다.RequireLowercase: Requires a lower case character in the password. 기본값은 true입니다.Defaults to true.
  • RequiredUniqueChars: 암호에 고유한 문자 수가 필요합니다.RequiredUniqueChars: Requires the number of distinct characters in the password. 기본값은 1입니다.Defaults to 1.

사용자의 잠금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:

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

로그인 설정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:

  • RequireConfirmedEmail:은 확인 된 전자 메일에 로그인 할 필요 합니다.RequireConfirmedEmail: Requires a confirmed email to sign in. 기본값은 false입니다.Defaults to false.
  • RequireConfirmedPhoneNumber: 확인 된 전화 번호가 시스템에 로그인에 필요 합니다.RequireConfirmedPhoneNumber: Requires a confirmed phone number to sign in. 기본값은 false입니다.Defaults to false.

사용자 유효성 검사 설정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:

  • RequireUniqueEmail: 각 사용자에 게 고유한 전자 메일 필요 합니다.RequireUniqueEmail: Requires each User to have a unique email. 기본값은 false입니다.Defaults to false.
  • AllowedUserNameCharacters: Username에서 허용된 되는 문자입니다.AllowedUserNameCharacters: Allowed characters in the username. AbcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.@+ 기본값입니다.Defaults to 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:

  • Cookie.Name: 쿠키의 이름입니다.Cookie.Name: The name of the cookie. 기본값입니다. AspNetCore.Cookies 합니다.Defaults to .AspNetCore.Cookies.
  • Cookie.HttpOnly: True 인 경우는 쿠키는 클라이언트 쪽 스크립트에서 액세스할 수 없습니다.Cookie.HttpOnly: When true, the cookie is not accessible from client-side scripts. 기본값은 true입니다.Defaults to true.
  • ExpireTimeSpan: 쿠키에 저장 된 인증 티켓 시간 유효 하 게 유지 만들어진 시점에서 제어 합니다.ExpireTimeSpan: Controls how much time the authentication ticket stored in the cookie will remain valid from the point it is created. 기본값은 14 일입니다.Defaults to 14 days.
  • LoginPath: 사용자 권한이 부여 하지 않은 경우 로그인에이 경로로 이동 합니다.LoginPath: When a user is unauthorized, they will be redirected to this path to login. 기본값은 / 계정/로그인입니다.Defaults to /Account/Login.
  • LogoutPath: 사용자 로그 아웃 하는 경우이 경로로 이동 합니다.LogoutPath: When a user is logged out, they will be redirected to this path. / 계정/로그 아웃 하는 기본값입니다.Defaults to /Account/Logout.
  • AccessDeniedPath: 사용자 권한 부여 확인 실패 하면이 경로로 이동 합니다.AccessDeniedPath: When a user fails an authorization check, they will be redirected to this path. / 계정/AccessDenied 기본값입니다.Defaults to /Account/AccessDenied.
  • SlidingExpiration: True 인 경우 새 만료 시간 현재 쿠키 만료 창을 통해 중간 부분 이상으로 새로운 쿠키를 발급 합니다.SlidingExpiration: 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. 기본값은 true입니다.Defaults to true.
  • ReturnUrlParameter: ReturnUrlParameter는 401 권한이 없음된 상태 코드가 302 로그인 경로로 리디렉션으로 변경 되 면 미들웨어에서 추가 되는 쿼리 문자열 매개 변수의 이름을 결정 합니다.ReturnUrlParameter: The ReturnUrlParameter 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.
  • AuthenticationScheme:이 ASP.NET Core에 대 한 관련만 1.x 합니다.AuthenticationScheme: This is only relevant for ASP.NET Core 1.x. 특정 인증 체계에 대 한 논리적 이름입니다.The logical name for a particular authentication scheme.
  • AutomaticAuthenticate:이 플래그는 ASP.NET Core에 대 한 관련만 1.x 합니다.AutomaticAuthenticate: 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.