보안 관련 로직에 항상 등장하는 인증과 인가 둘의 차이점과 개념에대해 알아보자
인증이란 사용자의 신원을 확인하는 과정으로 자신을 인증할만한 인증 요소를 증거로 제시하여 인증요청을 한다
이 개념을 온라인에 적용 시키면 신분증이나 여권을 제시하는 대신 아이디/패스워드를 입력하거나 휴대폰에 전달된 SMS에 적혀있는 코드를 입력하는 것이지요. 인증요소는 하나일 수도 있고 두 개(two-factor) 또는 그 이상(multi-factor)일 수도 있습니다.
인증과 달리 인가는 사용자가 어떤 리소스에 접근할 수 있는지 동작을 수행 할 수 있는지 검증 하는 것
즉 접근 권한을 얻는 것이다.
예를 들어 accessToken과 같은 JWT 토큰을 활용하여 로그인이 된 유저에게 권한을 주는 것을 인가라고 한다
위 와 같은 로직으로 구현 된다!
authentication과 authorization
authentication(인증) : 로그인을 하는 것(로그인을해서 토큰을 받아오는 과정)
authorization(인가) : 로그인한 후, 로그인이 필요한 서비스들을 사용할 때 해당 유저임을 확인하는 것(리소스에 접근할 수 있도록 토큰을 확인하는 과정)
인증은 유저나 디바이스의 신원을 증명하는 행위입니다.
인가는 유저나 디바이스에게 접근권한을 부여하거나 거부하는 행위입니다.
인증은 인가 의사결정의 한 요소가 될 수 있습니다.
인가 가공물(토큰)로 유저나 디바이스의 신원을 파악하는 방법은 유용하지 않습니다.