인증과 인가의 차이

0

최근 개발되는 많은 시스템이 인가 를 얻기 위한 수단으로 JWT를 많이 이용한다. 클라이언트는 서버에서 발급받은 JWT를 요청마다 헤더에 실어 보낸디. 서버에서는 전달받은 JWT가 유효한지 검증을 하고 JWT에 포함된 정보로 인가를 수행한다.


인증

인증은 어떤 개체의 신원을 확인하는 과정이다. 개체는 보통 어떤 인증 요소를 증거로 제시하여 자신을 인증한다. 예를 들어 은행에 가서 돈을 인출하려고 하면 우리는 신분증을 은행직원에게 보여주고 나의 돈을 인출할 수 있게 된다. 인증요소는 하나일 수도 있고 두개 또는 그 이상일 수도 있다

인가

인증과 달리 인가는 어떤 개체가 어떤 리소스에 접근할 수 있는지 또는 어떤 동작을 수행할 수 있는지를 검증하는 것, 즉 접근 권한을 얻는 일을 말한다.
예를들어 공연장에 입장하기 위해 티켓을 제시하는 상황에서는 공연장에 입장할 권한이 있는지 여부에만 관심이 있지 우리의 신원이 무엇인지에 대해서는 관심이 없다. 공연장 티켓이 우리의 신원 정보를 포함하고 있지 않더라도 인가 과정에서 검증이 실패하는 것은 아니다.
인터넷 기반 앱에서는 일반적으로 토큰이라고 부르는 가공물을 사용하여 인가를 다룬다. 사용자 신원을 바탕으로 인가 세부사항을 가진 토큰을 생성한다. 시스템은 인가 토큰을 이용해서 어떤 권한을 부여할지, 즉 리소스 접근 요청을 허용할지 거부할지를 결정한다.


인증과 인가의 차이

인증은 인가로 이어지지만 인가가 인증으로 이어지지는 않는다. 신원 증명이 접근 권한을 승인하기에 충분하다고 해도, 즉 무언가를 얻는 데 인가를 받을 수 있다고 해도 인가가 항상 개체를 식별하는데 사용할 수 있는게 아니다.
예를 들어 탑승권은 비행기를 타는데 인가를 하는 역할도 하고 신원 데이터도 포함하고 있다. 하지만 공연 티켓은 공연장에 입장할 권리를 나타낼 뿐 세부 사항을 포함하고 있지는 않다는 소리이다.

profile
https://www.youtube.com/watch?v=__9qLP846JE

0개의 댓글