앞에서 쓴 글과는 별개로
팀 프로젝트로 웹사이트를 만들면서 배운 이론적인 것에 설명하려 합니다.
팀 프로젝트를 하면서 초보가 이해한 바로는, 수집된 데이터들을 서버에 저장하는 것이라고 이해했습니다.
좀 더 서칭해본 결과 , 키보드에 비유하는 영상을 봤는데
API라는 키보드를 사용자에게 제공해주고 각 각의 자판에 기능을 부여해 그 자판을 사용자가 누르면 상호작용이 일어나게 해주는 것이라고 합니다.
즉, 서버에 데이터를 저장하고 사용자의 상호작용이 일어날때 데이터를 불러와서 인가(Authorization)을 해준다고 이해했습니다.
이 부분은 팀 프로젝트 때 다뤄볼 시간이 별로 없어서 잘 몰랐습니다.
Jason Web Token 이라는 것인데 사용자 인증과 인가에 관련된 것입니다.
제가 본 영상에서는 '세션'과 비교를 하면서 알려주었는데, 일단 JWT는 크게 3파트로 나누어져있습니다.
Alg = 3번 VERIFY SIGNATURE을 만드는데 사용될 알고리즘이 지정된다.
토큰의 타입 = JWT
토큰을 누가 발급했고, 언제까지 유효하며, 서비스가 이 토큰을 통해 공개하고자 하는 내용등이
Json형식으로 저장된 데이터
1번의 알고리즘 + 2번 페이로드 + 서버에 숨겨놓은 비밀값 = 3. VERIFY SIGNATURE
하지만, JWT의 단점으로는 발급한 토큰을 그 기록을 서버에 기록하지 않기 때문에 통제를 할 수가 없다는 점이 있습니다. 그래서 실 서비스 중에 JWT만으로 인가를 구현하는 곳은 거의 없다고 합니다.
그래서 앞서 언급한 세션과 섞어 쓰거나 유효기간이 짧은 Access토큰, 보통 2주정도의 유효기간인 Refresh토큰 2개를 발급하여 계속해서 갱신을 해준다고 합니다.
하지만 이 방법도 차선일 뿐 빈틈을 보완하진 못하기 때문에 한계가 있다고는 합니다.