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

더 깊이 공부하고 싶다면
DevLec에서는 실무 중심의 C#, .NET, ASP.NET Core, Blazor, 데이터 액세스 강좌를 단계별로 제공합니다. 현재 수강 가능한 강좌 외에도 더 많은 과정이 준비되어 있습니다.
DevLec.com에서 자세한 커리큘럼을 확인해 보세요.
DevLec 공식 강의
C# Programming
C# 프로그래밍 입문
프로그래밍을 처음 시작하는 입문자를 위한 C# 기본기 완성 과정입니다.
ASP.NET Core 10.0
ASP.NET Core 10.0 시작하기 MVC Fundamentals Part 1 MVC Fundamentals Part 2
웹 애플리케이션의 구조와 MVC 패턴을 ASP.NET Core로 실습하며 익힐 수 있습니다.
Blazor Server
풀스택 웹개발자 과정 Part 1 풀스택 웹개발자 과정 Part 2 풀스택 웹개발자 과정 Part 3
실무에서 바로 활용 가능한 Blazor Server 기반 관리자·포털 프로젝트를 만들어 봅니다.
Data & APIs
Entity Framework Core 시작하기 ADO.NET Fundamentals Blazor Server Fundamentals Minimal APIs
데이터 액세스와 Web API를 함께 이해하면 실무 .NET 백엔드 개발에 큰 도움이 됩니다.
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com