ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인증과 인가란?
    프로그래밍 기초 공부 2022. 12. 2. 17:16

    인증

    • 어떤 개체의 신원을 확인하는 과정
    • 개체는 보통 어떤 인증요소를 증거로 제시하여 자신을 인증
    • 인증요소는 하나일 수도 있고 두 개 또는 그 이상일 수도 있음
      • ex) 온라인에서는 ID 와 패스워드를 입력하는 행위가 인증이 될 수 있음
        실생활에서는 공공기관에서 신원확인 시 신분증을 보여주는 것
    • 여러 개의 절차가 있을 수 있음
      • 은행의 경우, 본인인증 후 OTP, 보안카드 등의 절차를 추가로 거침

     

    인증 절차

    회원가입, 로그인을 예시로 사용

     

    회원가입 과정

    1. 아이디, 비밀번호를 생성
    2. 비밀번호를 암호화하여 DB에 저장

     

    로그인 과정

    1. 등록된 아이디와 비밀번호를 입력
    2. 암호화되어 DB에 저장된 사용자의 비밀번호가 서로 일치하는지 비교
          2-1  일치하면 로그인
          2-2  일치하지 않을 시, 로그인에 실패
    3. 로그인에 성공하면, Access Token을 클라이언트에 전송
    4. 최초 로그인 성공 후, 다음부터는 Access Token을 첨부하여 서버에 요청을 전송함으로써 매번 로그인하는 과정을 생략할 수 있음

     

     

    인가

    • 인증과 달리 인가는 어떤 개체가 어떤 리소스에 접근할 수 있는지 또는 어떤 동작을 수행할 수 있는지를 검증하는 것
    • 즉 접근 권한을 얻는 일
    • 서버에서 특정 파일을 다운로드할 수 있는 권한을 부여
    • 개별 사용자에게 관리자 권한으로 애플리케이션에 액세스할 수 있는 권한을 부여하는 경우
    • 보안 환경에서 권한 인증은 항상 인증 이후에 진행
    • 사용자가 먼저 자신의 자격 증명을 입증하면 기업의 관리자가 해당 사용자에게 요청한 리소스에 액세스할 수 있는 권한을 가짐
    •  일반적으로 토큰이라 부르는 가공물을 사용하여 인가를 다룸
      • 유저는 자신의 인가 세부사항을 가진 토큰을 통해 서버에 인증받음
      • 서버는 유저의 토큰을 보고 권한이 있는지 판단

     

    인가 절차

    1. 인증 절차를 통해, Access Token을 생성한다. 이 토큰은 사용자의 정보를 담은 상태이다. (ex. 사용자 아이디 값)

    2. 사용자가 요청을 보낼때, Access Token을 첨부하여 보낸다.

    3. 서버는 해당 Access Token을 복호화하고, 정보를 얻는다. (Access Token에 담긴 정보)

    4. 얻은 정보를 사용하여, DB에서 사용자 권한을 확인한다.

    5-A. 사용자의 권한이 확인되면, 해당 요청을 처리하도록 한다.
    5-B. 권한이 없다면, 에러코드를 출력

     

     

    인증과 인가

    • 인증과 인가는 API에서 가장 자주 구현되는 기능중 하나
    • Private한 API는 물론이고 Public한 API도 기본적인 인증과 인가를 요구

     

    • 인증과 인가는 한번에 쓰일 수도 있음
      • ex) 회사에 출근하면 찍는 지문 인식기는 내가 누구인지도 인식하면서,
        내가 회사 출입문을 통과할 수 있도록 회사 내부 접근을 인가함
    •  인증은 인가로 이어질 수 있지만, 인가는 인증으로 이어지지 않을 수도 있음
      • ex) 편의점에서 구매한 버스카드는 내가 누구인지에 대한 인증 정보는 담고 있지 않지만,
        잔액이 충분하다면 얼마든지 버스 탑승을 인가받을 수 있음

     

    '프로그래밍 기초 공부' 카테고리의 다른 글

    ORM이란?  (0) 2022.12.25
    해시란  (0) 2022.12.04
    대칭키, 비대칭키란?  (0) 2022.12.02
    람다식이란?  (0) 2022.11.26
    Serverless란?  (0) 2022.11.26
Designed by Tistory.