이번주도 쉴새없이 공부했다!!
보안 파트에 대해서 api요청안에 어떻게 정보를 담아서 전송하고 어떻게 받을지에 대해서 학습을 하였고 많이 어려웠고 많은 시간이 소요되었던 시간이였다.
그만큼 중요하다고 생각하기에 간단하게 정리를 하려고 이 글을 작성하였다.
여기에 적히는 내용은 모두 실습을 참고하여 정리를 하였다.
기본적으로 우리는 cors요청에 대해서 알아야 한다.
cors요청
쉽게 말해 다른 origin에 허용을 허락 하는 것이다.
- 그냥 다른 것도 허용한다는 느낌으로 이해를 하였다.
같은 HTTP에서 통신을 하는 것은 쿠키가 자동으로 들어가게 된다.
하지만 다론 HTTP에서는 쿠키가 자동으로 들어가지 않는다.
- cors요청을 허락하지 않았을 경우
예를들면 클라이언트의 url = localhost:4000
서버의 url = localhost:8080
이라면 클라이언트에서 url에 요청을 보낼떄에 cors를 허용하지 않으면 쿠키가 생성되지 않는다.
- 무상태성으로 작동하게 된다.
대략적인 글로 정리를 해보았다
일단 쿠키는 기본적으로 headers에 들어가게 된다.
그러면 우리가 HTTP의 무상태성을 해결하기 위해서는 쿠키를 넣어야 한다는 사실을 알고 있고 그러면 어떻게 쿠키를 넣어야 할까 라는 생각을 해야한다.
간단하다 몇줄의 코드를 설정해 주면 된다.
client - withcredential : true
server - credential : true
credential
라는 설정을 추가해 주면 된다.
첫번쨰는 서버, 두번쨰는 클라이언트 쪽에서 설정을 해준 모습이다.
이렇게 되면 쿠키가 유지가 되면서 통신을 하게 된다.
그러면 우리는 이렇게 유지되는 쿠키 안에 값을 저장해서 보관해면 된다.
좀더 실행활에 가깝에 이해를 하자면
요청을 보내게 되면 쿠키라는 하나의 장바구니가 형성이 되고 그 장바구니를 들고 다니며 내가 한 작업을 담는다고 생각을 하자
이번에는 토큰을 활용한 보안이다.
토큰을 활용한 보안은 처음에 코드를 보낸뒤 해당 코드를 확인후 토큰을 부여받고 그후 토큰으로 통신을 한다는 것을 알아 두자.
최초 토큰을 생성하는 코드이다.
로그인을 하게 되면 해당 값을 찾아내고 그후 토큰을 만들어 낸다.
jwt
모듈을 사용하여 salt를 추가해 암호화를 한 토큰을 만든다.그후 클라이언트에 토큰을 돌려주면 된다.
그후 토큰을 이용한 사용자를 인증하는 방법이다.
"Bearer + 암호화된 토큰"
토큰은 이런식으로 형태가 정해진 상태로 저장이 되기 떄문에 암호화된 토큰만을 뺴오기 위해서 split를 사용하는 것이다.
대개 말하는 대기업, 또는 사람들이 믿을수 있는 기업을 통해서 인증을 진행하는 방법이다.
문서로 잘 정리되어있어 네이버, 카카오에서도 쉽게 따라 할수 있다.
최초 로그인할떄에는 권한 코드가 필요하다.
해당 정보를 나에게 할당된 key,id에 알맞은 api로 전송을 하게 되면 토큰을 받게 된다.
이후 이 토큰을 이용해 내가 로그인할떄 저장된 정보를 뺴올수 있다.