심화 2~3

5w31892p·2022년 12월 26일
0

Spring

목록 보기
12/30

Security 에서 JWT를 사용한 인증/인가 흐름

  1. 사용자 회원가입
    -> 해당 URI 요청은 permitAll(무조건 접근 허용) 처리
    -> 사용자 입력값으로 service에서 회원가입 진행
  1. 사용자 정보 저장 시 비밀번호 암호화
    ->PasswordEncoder 사용
  1. 로그인
    -> 해당 URI 요청 permitAll 처리
    -> 사용자 입력값으로 service에서 회원 인증 진행 (비밀번호 일치 여부 등)
  1. 인증 성공 -> 정보 사용해 JWT 토큰 생성 후 Header에 추가하여 반환
    -> Client는 쿠키 저장소에 저장
  1. 게시글 작성과 같은 요청 진행시 JWT 토큰 같이 보낸다.
  1. 서버는 JWT 토큰 검증
  1. 토큰 정보 사용해 사용자 인증 진행해주는 Spring Security에 등록한 CustomSecurityFilter를 사용해 인증 / 인가 처리
  1. CustomSecurityFilter에서 SecurityContextHolder에 인증 완료한 사용자 상세 정보 저장
    -> 이를 통해 Spring Security에 인증이 완료 되었다는 것을 알려줌

즉, JWT 토큰과 CustomSecurityFilter를 통해 사용자를 로그인 된 상태로 유지 시켜준다.


패스에 보안을 적용하기 위한 메소드

메소드동작
access(String)주어진 SpEL 표현식의 평가 결과가 true이면 접근을 허용
anonymous()익명의 사용자의 접근을 허용
authenticated()인증된 사용자의 접근을 허용
denyAll()무조건 접근을 허용하지 않음
fullyAuthenticated()사용자가 완전히 인증되면 접근을 허용(기억되지 않음)
hasAnyAuthority(String...)사용자가 주어진 권한 중 어떤 것이라도 있다면 접근을 허용
hasAnyRole(String...)사용자가 주어진 역할 중 어떤 것이라도 있다면 접근을 허용
hasAuthority(String)사용자가 주어진 권한이 있다면 접근을 허용
hasIpAddress(String)주어진 IP로부터 요청이 왔다면 접근을 허용
hasRole(String)사용자가 주어진 역할이 있다면 접근을 허용
not()다른 접근 방식의 효과를 무효화
permitAll()무조건 접근을 허용
rememberMe()기억하기를 통해 인증된 사용자의 접근을 허용

OAuth (Open Standard for Authorization)

  • 웹사이트 및 애플리케이션에 비밀번호를 제공하지 않고 접근 권한을 부여 받을 수 있게 해주는 공통적 수단으로서 사용 되어지는 기술

kakao Login
google Login
naver Login
apple Login

0개의 댓글