ASP.NET Core Identity 기본 데이터베이스 테이블 이해 가이드
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- ASP.NET Core 개발자
- 인증/인가 시스템 설계에 관심 있는 중급 이상 개발자
- 보안 및 사용자 관리 기능 구현 필요 시
핵심 요약
AspNetUsers
: 사용자 계정 정보(이름, 이메일, 비밀번호 해시 등) 저장AspNetUserRoles
: 사용자-역할 다대다 관계 관리 (예: 사용자가 Admin 및 Moderator 역할 동시에 가짐)AspNetUserClaims
/AspNetRoleClaims
: 세분화된 권한 관리를 위한 커스텀 클레임 저장 (예:SubscriptionLevel = Premium
)
섹션별 세부 요약
1. 사용자 정보 테이블 (`AspNetUsers`)
UserName
,Email
,PasswordHash
,SecurityStamp
등 사용자 계정 정보 저장- 주요 목적: 사용자 프로필 데이터 저장 (예: 이메일 인증, 로그인 기록)
- 보안 고려사항:
PasswordHash
는 해시 처리된 값,SecurityStamp
는 계정 변경 시 업데이트
2. 역할 정의 테이블 (`AspNetRoles`)
Admin
,Moderator
,Customer
등 역할 이름 및 고유 ID 저장- 특징: 역할은 한 번만 정의되며 모든 사용자에게 재사용 가능
3. 사용자-역할 연계 테이블 (`AspNetUserRoles`)
- 사용자와 역할 간 다대다 관계 매핑
- 예: 사용자가 두 개 이상의 역할을 가질 경우 두 개의 레코드 생성
4. 외부 로그인 정보 테이블 (`AspNetUserLogins`)
- Google, Facebook 등 외부 로그인 제공자 정보 저장
ProviderName
,ProviderKey
,UserId
필드 포함
5. 토큰 관리 테이블 (`AspNetUserTokens`)
- 비밀번호 재설정, 이메일 인증, 2FA 토큰 등 임시 접근 권한 관리
- 보안 기능: 일회용 토큰 생성 및 유효 기간 제어
6. 커스텀 클레임 테이블 (`AspNetUserClaims` / `AspNetRoleClaims`)
SubscriptionLevel = Premium
,Department = HR
등 사용자/역할 기반 클레임 저장- 권한 제어:
AspNetRoleClaims
은 역할 기반 권한을 사용자에게 상속
7. 테이블 목적 요약
| 테이블 이름 | 목적 |
|------------|------|
| AspNetUsers
| 사용자 계정 정보 저장 |
| AspNetRoles
| 역할 정의 및 관리 |
| AspNetUserRoles
| 사용자-역할 관계 매핑 |
| AspNetUserLogins
| 외부 로그인 제공자 정보 저장 |
| AspNetUserTokens
| 일회용 토큰 생성 및 관리 |
| AspNetUserClaims
| 사용자 기반 커스텀 클레임 저장 |
| AspNetRoleClaims
| 역할 기반 커스텀 클레임 저장 |
결론
- 보안 인증 시스템 구현 시 ASP.NET Core Identity 기본 테이블을 기반으로 설계하고,
AspNetUserClaims
를 통해 세분화된 권한 제어를 적용하세요. - 외부 로그인(예: Google)을 사용할 경우
AspNetUserLogins
테이블을 반드시 연결하고, 2FA 토큰 관리를 위해AspNetUserTokens
활용을 권장합니다.