Post

인증(Authentication)과 인가(Authorization)

인증 / 인가

인증 / 인가 정보 유지는 세션과 SID를 기반으로 한다.

인증 ( Authentication )

사용자의 신원을 증명하는 것. e.g., 로그인한 사용자는 인증된 사용자.

인가 ( Authorization )

특정 리소스에 접근할 수 있는 권한을 부여 하는 것. 접근 제어(access control)라고도 볼 수 있다.

Identification / Verification / Authentication / Certification

  • https://www.jumio.com/identification-authentication-verification-compared/
  • certification은 자격(자격증)을 증명한다는 의미임. 신원 증명의 뜻은 아니다.
  • authentication은 인증 . 너가 시스템에 등록된 이 계정의 실 소유주가 맞는지?
    • e.g., ID/PW 인증. 생체 인증. 이메일 인증
    • 로그인 시점에 정보(가입시점에 너가 넘긴 정보)를 전달받아서 서버에 저장되어 있는 정보와 대조하여 일치하는지 확인하는 작업
  • verification은 검증 . A라고 주장하는 사람이 실제로 A가 맞느냐?를 검증 . (검사-증명)
    • e.g., fds를 통해서 검증하다. 3ds를 통해서 검증하다.
    • 개인정보를 받아 신뢰할 수 있는 기관을 통해 조회하거나 하는 로직. 보통 1회 수행 (가입 시점 등)

Apache

단순히 .htaccess만 사용하는 경우

403 Forbidden

디렉토리 단위. IP 기반. 관리자 페이지 접근 제어 정도에 활용할 수 있다.

HTTP 표준

표준이지만 보안 때문에 거의 쓰지 않는다. 접근 제어는 디렉토리 단위.

Basic 인증

401 Unauthorized를 반환하는 동시에 response에 WWW-Authenticate: Basic 헤더가 지정되어 돌아온다. ID / PW를 Base64 인코딩해서 보내기 때문에 쓰기가 좀 그렇다. .htaccess 파일에 AuthType Basic 등 관련 설정을 넣고 서버 사이드에서

1
2
header("WWW-Authenticate: Basic realm=\"REALM\"");
header("HTTP/1.1 401 Unauthorized");

입력하면 되기 때문에 간단히 사용할 수 있다. 입력한 ID / PW는 php의 경우 $\_SERVER['PHP\_AUTH\_USER'], $\_SERVER['PHP\_AUTH_PW']에 할당된다.

Digest 인증

401 Unauthorized를 반환하는 동시에 response에 WWW-Authenticate: Digest 헤더가 지정되어 돌아온다. ID / PW를 입력하면, 서버 정보+클라이언트 정보를 병합하고 MD5 해시를 전송하기 때문에 Basic 보다는 좀 낫지만 역시 쓰기가 좀 그렇다.

OAuth

401 Unauthorized를 반환하는 동시에 response에 WWW-Authenticate: Bearer 헤더가 지정되어 돌아온다. 통합 인증. 많이 쓰인다. 구글로 로그인 페이스북으로 로그인 이런게 OAuth를 이용한 것.

https://ko.wikipedia.org/wiki/OAuth
https://developer.github.com/v3/oauth/

https://stackoverflow.com/questions/57650692/where-to-store-the-refresh-token-on-the-client

TLS/SSL client certificate

X.509 공개키 인증서를 사용하는 방식. 좋지만 비용이 문제다.

HTTP+HTML form-based authentication

제일 많이 사용되는 방식. HTTP 뿐만 아니라 HTML도 함께 사용 해 인증을 처리하는 방식이다. 거창한게 아니라 <form>을 사용해 ID / PW를 전송하는 방식을 말한다. 각 웹 어플리케이션에서 직접 구현하기 때문에 처리가 모두 다를 수 있으며 세밀한 컨트롤이 가능하다.

This post is licensed under CC BY 4.0 by the author.