ASP.NET Core IdentityOptions
완전 정복: 인증 정책 설정 가이드
ASP.NET Core Identity
는 강력한 인증 및 사용자 관리 시스템을 제공하며, 그 중심에는 보안과 사용자 정책을 세밀하게 설정할 수 있는 IdentityOptions
클래스가 있습니다. 이 글에서는 IdentityOptions
가 무엇이며, 어떤 속성을 제공하고, 실제 애플리케이션에서 어떻게 활용하는지 체계적으로 설명합니다.
🔐 IdentityOptions란?
IdentityOptions
는 ASP.NET Core Identity 시스템의 설정 클래스입니다. 사용자 인증, 비밀번호 정책, 계정 잠금, 로그인 방식, 토큰 생성 등에 대한 규칙을 제어할 수 있습니다.
이 클래스는 일반적으로 Program.cs
또는 Startup.cs
의 ConfigureServices
메서드 내에서 설정됩니다:
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
는 단순한 설정 클래스 그 이상으로, 애플리케이션의 보안 수준을 결정하는 핵심 도구입니다. 이를 적절히 구성함으로써 사용자의 안전한 접근을 보장하고, 인증 과정에서 발생할 수 있는 다양한 상황을 유연하게 대처할 수 있습니다.
추천 자료: ASP.NET Core 인증 및 권한 부여
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!