인증과 인가

·2023년 5월 22일
0

개발 지식

목록 보기
79/96
post-thumbnail

인증

서비스에 접근하는 사용자가 누구인지를 확인하는 프로세스. 일반적으로 로그인을 통해 인증을 진행한다.

인증 방식

사용자가 서비스의 매 페이지마다 ID와 비밀번호를 확인하는 작업을 진행하면 굉장히 서비스를 이용하는데 불편할 것이다. 실제 10년 전 정도만 해도 이러한 로그인 방식을 사용하곤 했다. (매 페이지 정도까지는 아니지만, 웹 사이트를 나갔다 들어오면 다시 로그인을 하는 경우가 있었다.)

이러한 불편한 작업을 개선하기 위해, JWT와 세션을 활용해서 인증과정을 진행한다. JWT 방식의 경우, 한번 로그인이 정상적으로 수행되면 암호화된 토큰을 발급하여 해당 토큰을 인증과정이 필요한 요청에 함께 보내고 서버가 이를 확인하는 방식으로 인증 절차를 진행한다.

인가

사용자의 권한을 확인하고 해당 기능 혹은 페이지에 접근하는 것을 허가하는 과정이다. 예를들어 회원등급을 가진 온라인 쇼핑몰 서비스를 만들고, VIP 등급 이상의 고객에게만 판매하는 상품을 게시하는 페이지를 추가하는 경우 해당 등급이 되지 않는 사람에게는 페이지 접근이 못하도록 설정해야 한다.

인가 방식

서버에서 권한에 따라 다른 응답을 보내도록 한다. 기존의 JWT를 사용한다고 가정했을 때, access_token를 복호화하여 사용자는 user_id 등의 정보를 파악할 수 있다. 이를 가지고 유저 db에 존재하는 권한을 확인하여, 권한에 따라 다른 응답 처리를 한다. 예를들자면 VIP 등급이 확인이 된 경우는 정상적으로 페이지에 접근하도록 하고, 아닌 경우에는 접근하지 못한다는 메시지와 함께 다른 페이지로 리다이렉트 한다.

profile
새로운 것에 관심이 많고, 프로젝트 설계 및 최적화를 좋아합니다.

0개의 댓글