이해가 100프로 되지않아
의식의 흐름대로 써보는 til ,,
https 가 가지고있는 기밀성, 무결성(인증서 기반으로 데이터 제공자의 신원보장)을 보장할수있음.
토큰기반 인증
세션기반 인증 = 서버(혹은 DB)에 유저 정보를 담는 방식.
-> 이 부담을 클라이언트에게 넘겨줄 수 ㄴ없을까..
-> 대표적인 토큰기반 인증 -> JWT(JSON Web Token)
인증정보를 보관하는 방법
토큰 있으니까 입장시켜줘!
클라이언트에 저장해도 괜찮을까
민감한 정보는 담으면 안된다. 인증에 사용하는것을 클라이언트에 담는다고?
암호화한 상태로 담을 수 있고, 암호화 했기 때문에 클라이언트에 담아도 상관없다.
Json 포맷으로 사용자에 대한 속성을 저장하는 웹토큰.
aaaaaa.bbbbbb.cccccc
헤더 페이로드(정보) 시그니처
Header : 어떤 종류의 토큰인가? 어떤 알고리즘으로 암호화 하는가?
Payload : 유저의 정보, 접근 가능한지 권한 부여받았는가, 기타 필요한 정보(유저이름 등. 물론 암호화가 될 정보이지만 민감한 정보는 되도록이면 담지 않는것이 좋다.)
Signature : base64로 인코딩한 값과 salt 값의 조합으로 암호화 된 값.
토큰기반 인증 장점
1. 무상태성, 확장성
서버는 클라이언트에 대한 정보를 저장할 필요없다.
토큰해독이 되는지만 판단하면 된다.
보낼때마다 토큰을 헤더에 추가함으로 인증절차 완료.
각각의 서버에서 인증을 다 할 필요가 없이 하나의 토큰으로 인증을 받을 수 있다.
서버와 db에 부담을 덜어주게 된다.
안정성
암호화 한 토큰을 사용.
암호화 키를 노출할 필요 없음.
어디서나 생성 가능
토큰을 생성하는 서버가 꼭 큰 토큰을 만들지 않아도됨.
권한부여에 용이
토큰의 내용물, 페이로드 안에 어떤 정보에 접근 가능한지 정의.
사진과 연락처 사용권한 부여 / 사진권한만 부여 / 연락처 권한만 부여.
XSS : code injection 공격기법
CSRF : 기존의 인증정보(쿠키) 를 바탕으로 사용자가 어떤 변조된 웹사이트를 믿어서 당하는거..랜다..