인증,인가

javascript·2022년 4월 21일
0

authentication(인증)
내가 이 사이트에 가입된 회원임을 즉, 특정 서비스에 일정 권한이 주어진 사용자임을 아이디랑 비밀번호를 통해 인증을 받는 것

authorization(인가)
한번 인증받은 사용자가 이 후 서비스의 여러 기능을 사용할 때 내 계정으로만 할 수 있는 활동을 할 때 사이트가 사용자가 로그인 되어 있음을 알아보고 허가 해주는 것

  • 세션
    사용자가 로그인 성공하면 서버는 세션 표딱지 출력
    반쪽은 사용자의 브라우저 / 반쪽은 서버의 메모리
    세션아이디(요청보낼때마다 이걸 실어보냄) / 메모리에서 맞는 짝 찾음

단점
사용자 많아지면 서버의 메모리 많이 차지하고
서버가 꺼지면 메모리 다 날아감
서버 여러대 운영할 경우

  • 토큰
    로그인하면 토큰 건내줌 (찢지않고)
    서버는 기억하지 않음
    이후 요청마다 사용자에서 서버로 보내짐

헤더+페이로드+서버에 감춰놓은 비밀값을 알고리즘에 넣고 돌리면
서명이 나옴

세션을 대체하기엔 토큰의 단점
모든 사용자들의 상태를 기억하고 있으면 구현하기 힘들지만
기억하는 대상의 상태들을 언제든 제어할 수 있다는 의미
예를 들어 한 기기에서만 로그인 가능한 서비스

엑세스 토큰 탈취
엑세스 토큰의 유효기간 짧게 리프레쉬토큰으로 재발급( 로그아웃시키려면 리프레쉬토큰도 삭제)

profile
JavaScript learner

0개의 댓글