[MUKBO.log] Backend Dev_101 = 인증(Authn) vs 인가(Authz)

먹보·2023년 1월 31일
0

MUK_BO's General Info.

목록 보기
6/9

프로젝트를 진행하면서 빠질 수 없는 것이 있다면 바로 Authentication(Authn, 인증)Authorization(Authz, 인가)이다.

물론, 서비스에 따라 인증 인가가 필요가 없는 경우도 있지만 데이터를 제어하기 위해서는 어느 시점에서는 반드시 필요할 것이라는 생각이 든다.

✍ Authentication (Authn, 인증)

인증은 누군가 또는 시스템이 실제로 그 누구인지 또는 시스템인지를 결정하는 과정입니다. 인증 기술은 사용자의 자격 증명 정보가 데이터 인증 서버의 자격 증명 정보와 일치하는지 확인하여 인증 절차를 통과한 시스템에 대해 액세스 제어를 제공합니다.

프로그래밍을 제외한 실생활에 빛대어 설명하자면, 기존에 전당포에 맡긴 물건을 찾기 위해서 전당포 주인은 손님에게 본인임 증명 할 수 있는 신분증을 포함한 자격 증명 자료를 요청 할 것이고 이것을 전달 받은 주인은 기존에 자신이 가지고 있던 기록과 대조한 후 일치하면 해당 물건을 돌려 줄 것이다.

=> 쉽게 말해, 사용자의 신원을 검증하는 단계!

프로그래밍 상에서 인증에 사용되는 요소들은 다음과 같다.

  1. 비밀번호 : 가장 대표적인 인증 방식
  2. PIN, OTP : 고유의 랜덤 값을 인증 시 마다 이메일, 문자로 발급하여 인증 요청
  3. 2FA / MFA : 2단계 혹은 다중 요소 인증
  4. SSO (Single Sign On) : 한 번 인증하는 것으로 다른 곳에서도 인증 통과
  5. 생체인증 : 인증을 위해 개인의 신체정보를 이용하여 인증

인증 방식은 보안과 관련된 부분이기 때문에 중요한 자료를 저장하는 서비스의 경우 다중 요소 인증 방식을 통해 여러 개를 결합해서 쓰기도 한다.

✍ Authorization (Authz, 인가)

특정 리소스에 접근 할 수 있는 권한을 부여하는 과정

쉽게 말해, 주민등록증을 소지하고 만 19세가 넘은 청년들에게는 술과 담배를 살 수 있는 권한을 줄 수 있다.

인증이 된 사용자들에게만 인가 절차가 진행이 되는데 인가가 완료되면 그 사람의 권한을 알 수 있는 특정 리소스가 주어지는데 인가 절차에 따라 달라진다.

인가 절차에는 다양한 방식이 존재하는데 간단하게 알아보자

  1. API keys

    • 사용자가 등록 중에 시스템에 대한 인증 된 액세스 권한을 얻으려고하면 API key를 생성 받아 사용함
    • API Key는 일반적으로 요청의 URL 또는 헤더에 포함하는 긴 문자열
    • API 키는 주로 API를 호출하는 사람을 식별하는 수단으로 사용
    • 이 방법은 AuthN 및 Authz 모두에서 사용
  2. JWT / JSON Web Token

    • JWT는 당사자간에 안전하게 데이터를 전송하기위한 공개 표준이며 사용자는 공개 / 개인 키 쌍을 사용하여 권한을 부여받음
  3. OAuth

    • 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용 접근 위임을 위한 개방형 표준/
    • 이 매커니즘은 여러 기업들에 의해 사용되는데, 이를테면 아마존, 구글, 페이스북, 마이크로소프트, 트위터가 있으며 사용자들이 타사 애플리케이션이나 웹사이트의 계정에 관한 정보를 공유할 수 있게 허용
profile
🍖먹은 만큼 성장하는 개발자👩‍💻

0개의 댓글