286
한 권으로 끝내는 Node & Express
18.3.
인증
인증은 방대하고 복잡한 주제입니다. 정말 단순한 것을 제외하면 웹 애플리케이션 대부분의 핵
심이기도 합니다. 필자가 전할 수 있는 가장 현명한 충고는 “직접 하려 하지 마십시오”입니다.
당신의 명함에 ‘보안 전문가’라는 문구가 없다면 보안 인증 시스템을 디자인할 때 고려해야 하
는 복잡한 문제들에 아직 준비가 안 된 겁니다.
물론 애플리케이션의 보안 시스템을 이해하려는 시도도 하지 말라는 건 아닙니다. 직접 만들려
는 시도를 하지 않길 권할 뿐입니다. 필자가 추천하는 인증 테크닉의 오픈 소스 코드는 자유롭
게 공부하십시오. 공부하다 보면, 아무 도움도 없이 이 작업에 뛰어드는 게 얼마나 무모한 일인
지 알게 될 겁니다.
18.3.1.
인증과 승인
두 용어는 종종 뚜렷한 구분 없이 쓰이지만, 미묘한 차이가 있습니다. 인증
authentication
은 사용
자를 확인하는 일입니다. 즉 내가 이선 브라운이라고 말하면 나는 이선 브라운입니다. 승인
authorization
은 사용자가 무엇에 접근하거나 수정하거나 볼 권한이 있는지 판단하는 일입니다. 예
를 들어 고객은 자신의 계정 정보에만 접근할 수 있지만, 메도라크 여행사 직원은 다른 사람의
계정 정보나 구매 기록에 접근할 수 있습니다.
보통(항상은 아닙니다) 인증이 먼저이고 그다음이 승인입니다. 승인은 권한 있음/없음처럼 매
우 단순하게 만들 수도 있고, 사용자/관리자처럼 크게 나눌 수도 있으며 계정 타입에 따라 읽
기/쓰기/삭제/업데