TIL)23.06.29_JWT(Json Web Token)
인증 방법
- cookie 인증 : key-value 형식의 문자열으로 클라이언트에 설치되는 작은 기록 정보 파일, 각 브러우저에 저장함
- Session 인증 : id/pwd 를 서버에 저장
- Token 인증 : 서버에 접속하면 해당 클라이언트에게 토큰을 부여함(id/pwd를 확인하여 인증되었다는 의미)
=> 이 토큰이 클라이언트 헤더에 심어져 있어 이후 작업에는 헤더에 있는 토큰과 서버에 있는 토큰을 비교하여 인증을 진행
JWT : Json Web Token
- Token의 한 종류로 로그인 정보를 서버가 아닌 클라이언트에 암호화가 된 상태로 저장
순서
- 로그인
=> 로그인 성공시 JWT 로 암호화(Secret Key 사용)가 됨 -> 서버에서 쿠키를 생성해 JWT 에 담아 클라이언트에 전달(개발자 탭에서 확인 가능)
- 로그인 이후 작업
=> 서버에서 API 요청시마다 쿠키에 포함된 JWT를 찾아서 사용 -> Secret Key를 사용하여 JWT의 위조 여부 검증하고 성공시 JWT에서 API 요청을 실행(사용자 정보를 가져옴)
Secret Key가 뭔가요?
- 평문을 암호화 하는 것
- Secret Key가 유출되면 타인이 토큰을 생성하고 변조할 수 있으니 Secret Key는 최소 513bit 이상의 값을 설정하는 것이 좋다.
** application.properties에 Secret Key 입력 해줘야 해줘야 적용 가능!
+ 6.30 내용추가
- 암호화를 하는 방식에는 크게 두가지가 있다.
1. 암호화 후 복원X
2. 암호화 후 복원 필요(=> 로그인 정보 받는 방식)
- Secret Key란
=> 암호회된 내용을 원상 복구 시킬 때 필요한 정보로
Secret Key를 만들때는 정해진 규칙(길이 등), 기준을 맞춰줘야 한다.
- 공개키와 secet key (개인키)
=> 비대칭키 방식 : 암호화, 복호화를 할 때 각각 다른 키를 사용하는 것 - 공개키 : 암호화할 때 사용하는 키
- 개인키 : 복호화할 때 사용하는 키
공개키랑 개인키는 쌍을 이룬다.