Skip to content

Authorize vs Authorizing 차이

JeongHyeon

시작하기 전에

오늘은 회사에서 서비스키를 어떻게 생성하고 관리할꺼냐 가지고 이야기를 하면서 인증과 인가/승인 관련해서 이야기의 꽃을 피우고 있었다. 중간에서 한글로 말하면 알아먹지만 영어로 말하면 알아먹지 못하는 나 ..

Ted 영어 공부를 찾아보면서 오늘은 Authorize 와 Authorizing 의 차이에 대해 알아보려고 한다.

인증 (Authentication)

영어 사전에 검색해보면 ‘입증, 증명, 인증’ 이란 의미를 가지고 있다. 기본적으로 본인이 “누구인지” 확인한다고 생각하면 된다.

우리가 로그인할때 비밀번호나 생체인식, 소셜로그인 기능을 통해서 누구인지 “증명” 하는 것을 의미한다.

예를 들어서, 로그인 없이 https://mail.google.com 에 접근해보면 https://accounts.google.com 으로 리다이렉션이 걸리게 된다. 이런 상황이, 구글(서버) 입장에서는 모르는 사람이 접근하니까 인증부터 하세요 하고 이동하게 되는 것이다.

인가 (Authorization)

영어 사전에 검색해보면 ‘허가, 인가, 허가증, 인가증’ 이란 의미를 가지고 있다. 기본적으로 이 사람이 어떤 “권한” 을 갖고 있는지를 확인한다.

우리가 관리자 페이지나, 로그인이 필요한 페이지에 접근할때 우리가 “권한이 있는지” 판단하는 것을 의미한다.

예를 들어서, https://cafe.naver.com 으로 가보자. 평소에 들어가던 카페에 가서 로그인을 한 다음 관심있는 글을 눌러보면, 갑자기 “등업이 되시면 읽기가 가능한 게시판 입니다.” 라는 문구가 보인다.

이제 로그인은 했으니까 인증(Authentication)은 됐는데, 카페 등급이 낮아서 인가(Authorization)는 되지 않아 카페(서버)에서 권한이 없으니 볼 수 없다고 하는 것이다.

인증 vs 인가 비교

인증 (Authentication)인가 (Authorization)
목적너 누구야?너 이거 해도 돼?
예시로그인 (비밀번호, 소셜로그인)카페 등급별 게시판 접근
실패 시401 Unauthorized403 Forbidden
확인 대상신원 (Identity)권한 (Permission)
순서먼저나중에 (인증 이후)

마치며

나처럼 영어를 잘 모르면 .. 사실 개발자가 영어를 모르면 안되는데 .. 유사하지만 다른 의미와 방식을 갖고 있기 때문에 헷갈릴 수 있다고 생각한다.

인증과 인가 방식에 대해서 고민하는 건 개발자로써 어떠한 서비스를 만들더라도 꼭 중요한 부분이라고 생각한다. 어떤 인증방법과 권한 정책을 세우고 설계하지 않으면 서비스가 어느정도 안정기에 접어들고 확장할때 걸림돌이 된다.

당장 오늘의 나만해도, 현재 4개의 서비스가 각 다른 서비스를 제공하지만, 엮여있는 것들이 많다보니 서비스키를 이용해서 데이터를 주고받는 경우가 있다. 근데 어떤 서비스는 백도어키 마냥 만들어놔서 다 열리고 (x-api-key를 아무거나 넣어도 작동되는 ..) 내가 만든건 유저별로 권한을 나눠서 서비스키를 제공했다. 그러다보니 다른팀에서 서비스키를 제공받는 사람 입장에서는 어이가 없는거지 .. 인증방식도 다르고, 키값도 다르다보니 .. 그래서 오늘 더 확장하기전에 이런 이야기를 통해 정리를 하고싶었던 게 아닐까 싶다.

이 글 수정하기
Anterior
계륵같은 존재 react-query
Siguiente
OTLP: OpenTelemetry 가 뭔가요