웹서비스 백엔드 API 서버를 개발하다보면 거의 십중팔구는 사용자 기능이 필요해집니다. 웹 백엔드 강의들을 찾아보면 일단 CRUD 로 시작해서 회원 관리까지가 튜토리얼이라고 봐도 무방할정도로 아주 기본적인 기능이라고 볼 수 있어요.
하지만 대부분의 흐름이 같은 기존의 CRUD와 달리 사용자 관리로 들어오면 보안 이슈 때문에 골치아파집니다ㅋ.
그래서, 그중에서 많이 사용되는 용어들인 인증(Authentication)과 인가(Authorization)에 대해서 간단히 알아보고 확실히 내걸로 만들자는 취지에서 글을 하나 써보려고 합니다. 보통 이쪽분야에서 Auth~ 어쩌구 저쩌구 라고 하면 이거 두개를 합쳐 말한다고 생각하심 됩니다.
이 분야에 대해 고민해본적이 없는 사람이라면, 둘이 단어 느낌이 비슷해서 헷갈리는게 정상이니 걱정 안하셔도 될거같습니다.
❗️ 내용 설명을 위해서 지금 저희는 편의점 알바생이고 어떤사람이 술과 함께 담배를 달라며 계산대로 온 상황을 가정할겁니다. 같이 몰입 해 주셔야 돼요.
- 인증 (Authentication)
먼저 인증은 위 상황에서, "손님, 신분증좀 보여주시겠어요?" 으로 표현 하면 유사하다고 볼수있습니다.
편의점 알바를 해보지 않았더라도, 술과 담배와 같은 미성년자 판매 금지 물품은 손님에 대한 신원정보 확인을 하고 판매를 해야겠죠. 일단 이걸 사게 내버려둘지, 안된다고 막을지 정하기 전에 얘가 몇살인지, 받은 신분증이 실제로 이사람이 맞는지 등의 정보를 확인하기 위해서는 신분증을 "받아서" 봐야겠죠, 신분증은 말그대로 신분을 나타내는 표딱지 잖아요.
바로 이 손님의 정보를 확인하는 과정 자체를 인증 이라고 하는 겁니다.
이 개념을 이제 개발쪽으로 연관 시켜 보자면 로그인 기능이 되는겁니다. 여러분 지금 이 게시글에 댓글 달려고 할때, 로그인 안된상태로 달수있나요? 로그인 먼저 하라고 사이트가 화부터 낼겁니다. 이게 여러분들이 현재 티스토리라고 하는 웹서비스에 인증(Authentication)이 되어있지 않은겁니다.
- 인가 (Authorization)
자 이제 위에서 손님한테 신분증을 받았습니다. 이제 인증은 완료 된거 같네요. 그럼 이제 받고 뭐할겁니까, 멍하니 있지말고 이사람이 술, 담배를 사갈 자격 혹은 권한이 있는지 확인 해야겠죠. 그것을 하기위해 몇년생인지 보고, 지금이 몇년도인지 확인 후 20세 이상인지 확인하는 과정을 머릿속으로 거쳐야 될겁니다. 이렇게 손님의 정보 확인한 다음, 술 담배를 살 자격이 되는지 확인하는 과정을 인가 라고 합니다. 이제 이 과정을 거치고나면 손님에게 머리에 피도안마른게 어디서 라고 할지, 10,000원입니다~ 라고 할지 결정되는 겁니다.
인가 역시 개발쪽으로 옮겨 보면 관리자 기능이 되겠죠. 여러분들이 티스토리에 로그인했다고 지금 이 게시글 삭제하실수 있습니까? 게시글 관리 혹은 삭제 버튼도 안보일 뿐더러, 삭제요청을 해 주는 URL을 알아내더라도 접근도 안될껄요. 여러분들은 제 블로그 관리자 권한이 없으니까요. 이렇게 여러분들이 제 블로그에 대한 권한이 없는것이 바로 인가(Authorization) 되지 않았기 때문입니다.
- 요약
위 개념들이 이해가 되었다면 이제 좀 어려운 말로 정확한 정의를 정리해보겠습니다.
- 인증(Authentication)
사용자의 신원을 기존에 합의된 특정 프로세스를 통해 확인(Verify), 및 데이터화 하는 행위.
- 인증(Authorization)
사용자가 요구하는 작업(데이터 액세스 등)에 대한 권한을 확인하는 행위.
'Computer Science > Security' 카테고리의 다른 글
CSRF, XSS 완전 정리 (0) | 2025.03.28 |
---|