인증은 유저의 identification을 확인하는 절차이다.(유저의 아이디와 비밀번호를 확인하는 절차)
인증 절차(로그인 절차)
access token
을 클라이언트에게 전송.access token
을 첨부해서 서버에 request를 전송함으로써 매번 로그인할 필요가 없어진다.유저 비밀번호 암호화
유저의 비밀번호는 반드시 암호화되어 DB에 저장되어야 한다.
내부 인력도 유저의 비밀번호를 알 수 없다.
비밀번호 암호화에는 단방향 해쉬 함수(one-way hash function)가 일반적으로 쓰인다.
단방향 해시 함수는 원본 메시지를 변환하여 암호화된 메시지인 다이제스트(digest)
를 생성한다. 원본 메시지를 알면 암호화된 메시지를 구하기는 쉽지만 암호화된 메시지로는 원본 메시지를 구할 수 없어서(쇄도 효과로 인해) 단방향성(one-way)
이라고 한다.
쇄도 효과(avalanche effect): 산사태 효과는 어떤 암호 알고리즘이 입력값에 미세한 변화를 줄 경우 출력값에 상당한 변화가 일어나는 성질을 의미한다. ... 만약 암호 알고리즘의 쇄도 효과가 크지 않다면, 그러한 성질을 이용하여 암호분석이 더 쉽게 가능할 수 있다.
단방향 해쉬 함수의 약점
단방향 해쉬 함수의 취약점 보완
인가는 유저에게 요청(request)을 실행할 수 있는 권한이 있는지를 확인하는 절차
예를 들어, 유저에게 고객 정보를 열람할 수 있는 권한만 있는지, 아니면 고객 정보를 열람 및 수정까지 할 수 있는 권한이 있는지를 확인하는 것
인가는 JWT
를 통해 구현된다.
인가 절차
access token
생성하며, 이 때 access token
에는 유저를 식별할 수 있는 정보가 들어가 있어야 한다.(예를 들어 user id)access token
츨 첨부한다.access token
을 복호화한다.