우아한테크코스
📋 테스트로 배우는 Spring Auth 강의
newwisdom
2021. 8. 6. 14:05
반응형
2021-05-28글
피드백 강의
인증 헤더
로그인을 통해 토큰을 발급 받은 후 헤더에 Authorization에 토큰을 실어보낸다.
왜 굳이 이 헤더에 토큰을 넣어 보낼까?
HTTP 인증
HTTP 프로토콜의 정의이기 때문이다.
- 클라이언트가 "/" 요청을 보낸다.
- 서버는 접근을 할 수 있는지 확인하고, 없으면 401을 보낸다.
- 여기서는 basic이라는 방식으로 토큰을 검증하고 있다. 잘못되었으니 다시 요청해!
HTTP 인증 스킴
Basic
- base64를 이용해 인코딩된 사용자의 id/pw 쌍의 인증 정보를 전달
- 안전을 위해 HTTPS(TLS) 연결 위에서 발생되어야 함
Bearer
- bearer token이라는 보안 토큰을 활용하는 인증 스킴
- Outh2.0에서 사용하기 위해 만들어짐
JWT
- Json Web Token
- 웹 표준 (RFC 7519)
- 자체적으로 검증되었음을 증명해주는 signature를 포함
- 생성시 검증이나 권한 인가 시 필요한 값을 넣어 상태를 따로 관리하지 않아도 됨
토큰의 구성
1. Header
- 토큰에 대한 해석 방법
- alg : 시그니처에서 사용할 알고리즘 방법
- typ : 토큰의 타입
2. Payload
- 토큰의 내용, 전달할 내용
- payload의 각각의 값을 클레임이라고 함
- sub : 클레임의 제목
- name :
- iat : 생성 시간
- 이 역시도 base64로 인코딩
3. Signature
- 헤더와 페이로드가 변조되지 않았음을 검즌
- base64로 인코딩을 하고, 알고리즘과 키값으로 해독
basic과 bearer 둘 다 base64로 인코딩 하면 어떻게 구별하나요?
이는 서버에서 페이크처럼 쓸 수 있지!
payload가 같으면 토큰 값도 같아지나요?
근데 아마 iat가 달라서 다를 수 밖에 없을 듯
Dispatcher Servlet
요청에 따라 수행할 로직 분기
DispatcherServlet 위치
- Handler 앞에 Interceptor가 있음
MVC Config 객체도 모두 빈이었다.
반응형