앞서 Session을 활용한 보안 처리를 알아보았다.
이번에는 또다른 보안 처리하는 법인 Token을 이용한 보안에 대해서 알아 볼것이다.
일단 Session에 비해서 장점이 있다.
토큰을 다루는 대표적인 모듈이다
일단 토큰은 유저 정보를 암호화한 상태로 담을 수 있고, 암호화했기 떄문에 클라이언트에 담을 수 있다.
세상에 완벽한 보안은 없다는 것을 알아두자!!
JWT
는 권한을 부여하는 역할에서 굉장히 유용하다.
1. 클라이언트가 로그인 요청을 보낸다.
2. 서버에서 아이디 비밀번호를 확인하고 암호화된 토큰을 생성한다.
3. 토큰을 클라이언트에게 보내주고 클라이언트는 토큰을 저장한다.
- 저장하는 곳은 localStorage, cookie, State등등 다양하다.
4. 클라이언트가 요청을 할떄 HTTP헤더에 토큰을 담아 보낸다.
5. 이후 서버에서도 토큰을 확인한뒤 사용자가 맞는지 판별한다.
1. Statelessness & Scalability (무상태성&확장성)
- 서버 입장에서는 토큰해독만 하면 되지 클라이언트 정보를 저장할 필요가 없다.
- 클라이언트 입장에서는 요청을 보낼때마다 토큰만 포함시켜 보내면 된다.
2. 안전하다.
3. 어디서나 생성이 가능하다.
- 굳이서버에서만 만들 필요는 없다.
4. 권한 부여에 용이하다.