[개발] Security Stamp 활용

메이야 2026.09.03 21:55 댓글 1 조회 223

SecurityStamp는 ASP.NET Core Identity에서 사용자 계정의 무결성과 보안을 검증하기 위한 토큰 같은 역할을 합니다. 쉽게 말해, 계정에 중요한 변화가 생겼을 때 기존 로그인 세션을 무효화시키는 장치예요.

동작 방식

  • SecurityStamp 속성은 AspNetUsers 테이블에 저장된 GUID 문자열입니다.
  • 사용자가 로그인하면 SecurityStamp 값이 인증 쿠키에 함께 기록됩니다.
  • 이후 요청마다 SecurityStampValidator가 현재 DB에 저장된 값과 쿠키에 기록된 값을 비교합니다.
  • 만약 값이 다르면, 즉 계정에 중요한 변경이 있었음을 의미하면, 기존 로그인 세션은 무효화되고 다시 로그인해야 합니다.

언제 값이 바뀌는가?

  • 비밀번호 변경
  • 이메일/전화번호 변경
  • 2FA 설정 변경
  • 계정 잠금/해제
  • 관리자가 강제로 UpdateSecurityStampAsync(user)를 호출했을 때

활용 예시

  1. 강제 로그아웃
     관리자가 특정 사용자의 모든 세션을 끊고 싶을 때:
C#
await userManager.UpdateSecurityStampAsync(user); 
  1. 이렇게 하면 사용자의 모든 기존 로그인 쿠키가 더 이상 유효하지 않게 됩니다.
  2. 자동 검증 주기 설정
    Startup.cs에서 SecurityStampValidatorOptions를 설정하면, 일정 주기마다 자동으로 SecurityStamp를 확인합니다:
C#
services.Configure<SecurityStampValidatorOptions>(options =>
    options.ValidationInterval = TimeSpan.FromMinutes(30));
  1. → 30분마다 쿠키의 SecurityStamp와 DB 값을 비교하여 불일치 시 자동 로그아웃 처리.


정리하면, SecurityStamp는 사용자 계정의 중요한 변경을 감지하고 기존 인증 세션을 무효화하는 안전장치입니다. 관리자가 직접 갱신해 강제 로그아웃을 시킬 수도 있고, 시스템이 주기적으로 검증해 자동으로 세션을 끊을 수도 있습니다.

목록
댓글 1