※ 인증 vs 인가
인증(Authentication): 증명서를 발급받음, 증명서를 다룸. /api/v1
ex) 로그인
인증 요청 문제, 401 Error(Unauththorized)
인가(Authorization): 서버입장에서 자원에 접근하는 것을 허락하는 것, 자원을 다룸. /api/v2
=> 인증 완료된 자격이 필요함. 로그인 필수!!!
접근 권한 문제, 403 Error(Forbidden)
※ 세션 vs JWT
세션: 서버가 유저 상태를 추적(Stateful). 서버가 아닌 메모리에서 로그인한 유저의 정보를 직접 저장함.
서버가 세션id를 클라이언트에 전달함.
JWT: 메모리에서 관리하지 않음(Stateless). 토큰 사용.
서버가 토큰을 클라이언트에 전달함.
Token: header, payload, signature(보안/유효성 검사. 토큰 유효 여부 판별(서버가 자신이 발급한 토큰이 맞는지 확인) 후, 로그인 가능 여부 판별)
※ 토큰
Access Token(자원 서버 접근 가능) | Refresh Token | |
수명주기 | 30분 | 7일 |
권한 | 인가 | 인증 |
저장 위치 | 1. js 변수 | 2. 브라우저 session(Client측에서 처리) 3. 쿠키(Server측에서 처리) |
-> XSS공격(Client측), CSRF 공격(Server측)
Refresh Token 탈취 보안
1. RTR: RT을 통해 AT을 재발급 받을 때, RT도 함께 재발급 받고 기존의 RT은 무효화함. 발급한 RT을 메모리에 저장하여 관리함.
2. MEM관리: Hash의 key:value를 userId:RT{id}로 관리. AT이 유효하지 않은 경우 RT안에 있는 userId정보를 확인하여, 메모리에서 userId:RT{id}가 일치한지 확인.
'스터디 > Spring Boot' 카테고리의 다른 글
[Spring Boot] 스프링 스터디 7일차 (0) | 2024.01.16 |
---|---|
[Spring Boot] 스프링 스터디 6일차 (0) | 2024.01.09 |
[Spring Boot] 스프링 스터디 4일차 (0) | 2023.11.25 |
[Spring Boot] 스프링 스터디 3일차 (0) | 2023.11.14 |
[Spring Boot] 스프링 스터디 2일차 (0) | 2023.11.07 |