본문 바로가기

프로그래밍(공통)

[도메인] OAuth의 개념과 OAuth 2.0?

OAuth

네이버, 카카오, 페이스북 로그인을 통해 사용자에게 회원가입을 대체할 수 있는 편리한 서비스를 제공한다. 이 과정에서 어떻게 기존 사이트의 회원 정보를 안전하게 사용할 수 있는 지에 대한 표준 프로토콜이 OAuth이다. OAuth를 활용하면 사용자가 네이버, 카카오 등의 아이디/비밀번호 같은 세부 사항을 작성하지 않아도 서비스의 사용자 정보를 새로운 서비스에서 안전하게 사용할 수 있다.

 

이 과정을 실 생활에 빗대은 예시이다.

  • 외부 손님 B가 회사에 근무하는 A를 만나러 왔다.
  • 회사는 A에게 B의 방문 사실을 알린다.
  • A는 B가 문제 없고 정상적인 목적으로 왔다고 회사에 알린다.=> 인증
  • A는 B의 방문 목적, 인적 사항 등을 기록한다.
  • 회사는 B에게 방문증을 발급한다. => 허가
  • A와 B는 정해진 장소로 이동해 방문 목적을 수행한다.

위 과정을 확인해보면 OAuth는 '인증'과 '허가'를 제공한다. '인증'이란 사용자가 정당한 사용자임을 확인하는 과정이고, '허가'란 특정 정보에 대한 접근을 허가함을 의미한다.

 

위 과정을 실제 OAuth의 인증 과정으로 나열하면 아래와 같다.

  • Request Token의 요청과 발급
  • 사용자 인증 페이지 호출
  • 사용자 로그인 완료
  • 사용자의 권한 요청 및 수락
  • Access Token 발급
  • Access Token을 이용해 서비스 정보 요청

 

Access Token

Access Token은 서비스 제공업체가 발행한 임의의 문자열이다. 서비스 제공 업체는 이 문자열 검증을 통해 서비스를 제공받는 사용자에게 특정 정보를 제공할 수 있다. 정상적인 Access Token이라면 정보를 공유할 수 있음을 의미한다. 관건은 이 문자열을 우리 서버에서 어떻게 전달해줄 수 있는가?

 

Redirect

위 Access Token을 전달하기 위한 방법으로 Redirect를 활용한다. 클라이언트가 서버로 자원을 요청하면 서버는 클라이언트에게 다른 주소를 전달하여 그 쪽으로 이동할 수 있게 안내한다.

 

OAuth 2.0

OAuth 1.0은 웹이 아닌 애플리케이션에서는 사용하기 곤란하고 절차가 복잡하다는 단점이 존재한다. 복잡한 절차는 Service Provider에게도 연산 부담이 발생한다. OAuth 2.0은 이를 개선하기 위해 탄생했고, 1.0과는 호환성은 없다.

 

OAuth 2.0의 특징

  • 애플리케이션 지원 강화
  • HTTPS를 활용하여 클라이언트 애플리케이션에서 암호화가 필요하지 않음
  • 보안 강화를 위해 Access Time에 대한 Life Cycle이 존재
  • Consumer의 개발 절차가 간소화

 

 

참고