SecurityStamp는 ASP.NET Core Identity에서 사용자 계정의 무결성과 보안을 검증하기 위한 토큰 같은 역할을 합니다. 쉽게 말해, 계정에 중요한 변화가 생겼을 때 기존 로그인 세션을 무효화시키는 장치예요.
동작 방식
- SecurityStamp 속성은 AspNetUsers 테이블에 저장된 GUID 문자열입니다.
- 사용자가 로그인하면 SecurityStamp 값이 인증 쿠키에 함께 기록됩니다.
- 이후 요청마다 SecurityStampValidator가 현재 DB에 저장된 값과 쿠키에 기록된 값을 비교합니다.
- 만약 값이 다르면, 즉 계정에 중요한 변경이 있었음을 의미하면, 기존 로그인 세션은 무효화되고 다시 로그인해야 합니다.
언제 값이 바뀌는가?
- 비밀번호 변경
- 이메일/전화번호 변경
- 2FA 설정 변경
- 계정 잠금/해제
- 관리자가 강제로 UpdateSecurityStampAsync(user)를 호출했을 때
활용 예시
- 강제 로그아웃
관리자가 특정 사용자의 모든 세션을 끊고 싶을 때:
C#
await userManager.UpdateSecurityStampAsync(user); - 이렇게 하면 사용자의 모든 기존 로그인 쿠키가 더 이상 유효하지 않게 됩니다.
- 자동 검증 주기 설정
Startup.cs에서 SecurityStampValidatorOptions를 설정하면, 일정 주기마다 자동으로 SecurityStamp를 확인합니다:
C#
services.Configure<SecurityStampValidatorOptions>(options =>
options.ValidationInterval = TimeSpan.FromMinutes(30));- → 30분마다 쿠키의 SecurityStamp와 DB 값을 비교하여 불일치 시 자동 로그아웃 처리.
정리하면, SecurityStamp는 사용자 계정의 중요한 변경을 감지하고 기존 인증 세션을 무효화하는 안전장치입니다. 관리자가 직접 갱신해 강제 로그아웃을 시킬 수도 있고, 시스템이 주기적으로 검증해 자동으로 세션을 끊을 수도 있습니다.