ASP.NET Core IdentityOptions 완전 정복: 인증 정책 설정 가이드

  • 4 minutes to read

ASP.NET Core Identity는 강력한 인증 및 사용자 관리 시스템을 제공하며, 그 중심에는 보안과 사용자 정책을 세밀하게 설정할 수 있는 IdentityOptions 클래스가 있습니다. 이 글에서는 IdentityOptions가 무엇이며, 어떤 속성을 제공하고, 실제 애플리케이션에서 어떻게 활용하는지 체계적으로 설명합니다.


🔐 IdentityOptions란?

IdentityOptions는 ASP.NET Core Identity 시스템의 설정 클래스입니다. 사용자 인증, 비밀번호 정책, 계정 잠금, 로그인 방식, 토큰 생성 등에 대한 규칙을 제어할 수 있습니다.

이 클래스는 일반적으로 Program.cs 또는 Startup.csConfigureServices 메서드 내에서 설정됩니다:

services.Configure<IdentityOptions>(options =>
{
    // 보안 및 인증 정책 설정
});

🔍 주요 속성 및 구성 항목

1. 📘 Password – 비밀번호 정책

비밀번호의 복잡성과 안전성을 설정하는 부분입니다.

options.Password.RequireDigit = true;
options.Password.RequiredLength = 8;
options.Password.RequireNonAlphanumeric = false;
options.Password.RequireUppercase = true;
options.Password.RequireLowercase = false;
options.Password.RequiredUniqueChars = 1;
속성 설명
RequireDigit 숫자 필수 여부
RequiredLength 최소 비밀번호 길이
RequireNonAlphanumeric 특수문자 필수 여부
RequireUppercase 대문자 필수 여부
RequireLowercase 소문자 필수 여부
RequiredUniqueChars 서로 다른 문자 수 최소 개수

2. 🔒 Lockout – 계정 잠금 정책

로그인 실패 시 일정 시간 동안 계정을 잠글 수 있습니다.

options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
options.Lockout.MaxFailedAccessAttempts = 5;
options.Lockout.AllowedForNewUsers = true;
속성 설명
DefaultLockoutTimeSpan 잠금 유지 시간
MaxFailedAccessAttempts 최대 실패 로그인 횟수
AllowedForNewUsers 새 사용자에게도 잠금 적용 여부

3. 👤 User – 사용자 계정 설정

사용자 이름 형식과 이메일 고유 여부 등을 설정할 수 있습니다.

options.User.RequireUniqueEmail = true;
options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
속성 설명
RequireUniqueEmail 중복 이메일 허용 여부
AllowedUserNameCharacters 허용되는 사용자 이름 문자 집합

4. ✅ SignIn – 로그인 정책

로그인 전 계정 확인이 필요한지 여부를 지정합니다.

options.SignIn.RequireConfirmedEmail = true;
options.SignIn.RequireConfirmedPhoneNumber = false;
options.SignIn.RequireConfirmedAccount = true;
속성 설명
RequireConfirmedEmail 이메일 인증 필수 여부
RequireConfirmedPhoneNumber 전화번호 인증 필수 여부
RequireConfirmedAccount 계정 확인 필수 여부

5. 🔑 Tokens – 보안 토큰 설정

비밀번호 재설정이나 이메일 인증에 사용되는 토큰 생성 방식 설정입니다.

options.Tokens.PasswordResetTokenProvider = TokenOptions.DefaultProvider;
options.Tokens.EmailConfirmationTokenProvider = TokenOptions.DefaultEmailProvider;

🛠 실전 예제: Program.cs에서 설정하기

services.Configure<IdentityOptions>(options =>
{
    // 비밀번호 정책
    options.Password.RequiredLength = 8;
    options.Password.RequireUppercase = true;

    // 잠금 정책
    options.Lockout.MaxFailedAccessAttempts = 5;
    options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(10);

    // 사용자 정책
    options.User.RequireUniqueEmail = true;

    // 로그인 정책
    options.SignIn.RequireConfirmedEmail = true;
});

🧩 정리

항목 설정 목적
Password 비밀번호의 복잡도 보장
Lockout 계정 보안 강화를 위한 잠금 기능
User 사용자 식별 정책 설정 (이메일, 아이디)
SignIn 로그인 조건 설정 (이메일/전화 인증 등)
Tokens 토큰 기반 기능 설정 (이메일 인증, 비밀번호 초기화 등)

✨ 마무리

IdentityOptions는 단순한 설정 클래스 그 이상으로, 애플리케이션의 보안 수준을 결정하는 핵심 도구입니다. 이를 적절히 구성함으로써 사용자의 안전한 접근을 보장하고, 인증 과정에서 발생할 수 있는 다양한 상황을 유연하게 대처할 수 있습니다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com