대학교 캡스톤 디자인 프로젝트를 하게 되었는데,
JWT를 사용해 앱과 서버간의 사용자 인증(로그인)을 하게되어 공부하게 되었다.
- JWT는 유저를 인증하고 식별하기 위한 토큰기반 인증이다.
- 토큰은 서버가 아닌 클라이언트에 저장 (서버부담 DOWN)
- 토큰 자체에 사용자 권한 정보나 서비스를 사용하기위한 정보가 포함 -> 데이터가 많아질시 토큰이 커짐
- 비대칭 암호화 방식
- 무상태인 환경에서 데이터 통신이 가능
- Header (토큰 타입, 서명 생성 알고리즘 저장)
- Payload (사용자나 토큰에 대한 속성) - 누구나 볼수 있기에 민감한 정보는 담지 않음
- Signature (서명) - 비대칭 암호화
1. 앱 사용자가 로그인을 통해 인증
2. 서버에서 서명된 JWT를 생성하여 앱에 응답 주기
3. 앱에서 서버에 데이터를 추가로 요구할 떄 JWT를 HTTP Header에 첨부
4. 서버에서 앱으로부터온 JWT 검증
- 별도의 인증 저장소가 필요하지 않음.
- 앱의 상태를 서버에 저장하지 않아도 됨.
- 데이터에 대한 보완성 증가
- 전달량이 많아, 네트워크 부하가 생길 수 있음.
- Payload 에는 암호화가 되어있지 않아 민감한 정보 저장 불가.
- 토큰이 탈취당할시 만료가 될 떄까지 기다려야함. (중요)
단위 테스트에 대한 공부 (0) | 2023.03.05 |
---|---|
구글 Firebase에 대한 고찰 (0) | 2023.02.26 |
댓글 영역