[스프링부트 시큐리티] 1. SpringBoot Security

문정준's avatar
Jul 25, 2025
[스프링부트 시큐리티] 1. SpringBoot Security
Contents
SettingsTODO

Settings

notion image
notion image
 

TODO

  1. Form으로 username, password 넘기는 코드 작성
  1. Spring Security + JWT로 인증 및 CORS, Access 권한 부여
      • Spring Security는 기본적으로 negative 전략 : 모든 접근을 일단 차단
      • 권한이 부여되면 풀어주는 식으로 적용 (이때까지 한 것의 반대)
  1. (가능하면) OAuth 2.0 적용
 
 

Spring Security

  • 기존 방식의 UserService, UserRepository에서 비밀번호를 비교하는 방식이 아닌, Spring Security에서 제공하는 UserDetails를 상속 받아 사용
  • UserController에서 login 메서드를 따로 만들지 않으면 Spring Security 내부 메서드인 login이 작동 → UserDetails 및 AuthenticationFilter 등에 의해 로그인 로직 작동
    • 로그인 body는 x-www-form-urlencoded 형태
    • 필터를 거친 후 로그인 정보가 토큰 방식으로 저장됨
      • username, password 형태
    • 로그인 정보를 AuthenticationProvider에 전달하고, Provider는 자동으로 loadUserbyUsername 메서드 호출
      • 이때, 받아온 password와 유저 정보를 비교해서 자동으로 인증 진행
        • 비밀번호가 같아서 인증이 되면 UserDetail 반환
        • 비밀번호가 다르거나 일치하는 User가 없으면 Exception
    • 성공하면 Session 내부의 Authentication에 3가지 정보를 저장
      • UserDetail = User
      • Password
      • Authority (권한)
    • 이후 이 세션 키를 사용자에게 반환
    • 세션 방식, JWT 방식 등 다양한 인증 방식 존재
  • AwareFilter에서 권한을 따로 설정하여 해당 유저에게만 권한을 열어주거나, 권한이 없을 경우 접근을 차단할 수 있음
    • 권한은 “ROLE_XXXX”의 형태로 확인
    • UserDetails의 getAuthorities 메서드를 사용해서 User 정보에 권한을 자동 설정
    • 접근 권한을 여러 사람이 한 번에 들어올 수 있게 만들 수도 있고, 권한은 구분하되 유저가 여러 권한을 가지게 설계할 수도 있음
      • hasAnyRole() : 내부의 권한 중 하나라도 가지고 있으면 접근 가능
notion image
 
 
notion image
 

1. 세션 인증 방식
1. 세션 인증 방식
2. JWT 인증 + REST API
2. JWT 인증 + REST API
Share article

sxias