개발자doc 2024. 7. 13. 20:48
목차
1. OAUTH란
2. 만들어진 이유
3. oauth 동작 과정
4. 버전
1. OAUTH란?
    • 인증을 위임하는 표준 프로토콜

 

웹 사이트를 이용하다보면 로그인 인증을 해야만 이용가능한 서비스가 있다. 그럴 때 간편하게 소셜 서비스를 통해 간편하게 가입하고 로그인이 가능한 것을 본 적이 있을 것이다. 우리는 어느 순간 만들어진 간편한 인증 시스템을 잘 이용하고 있는데 개발자로써 왜 만들어졌는지 알아보고 직접 인증을 구현해보도록 하자.

 

2. 만들어진 이유

1) 보안 문제

 

애플리케이션을 이용할 때 특정 서비스를 사용하기 위해서는 인증을 거쳐야 한다. 하지만 내가 이용하려하는 애플리케이션이 악의적인 목적을 가지고 있다면 어떨까? 가입할 때 입력한 개인정보가 해당 서버에 있기 때문에 심각한 보안 문제를 일으킬 수 있다. 하지만 oauth를 통해 인증을 하기 때문에 개인정보를 애플리케이션 서버에서 관리하는 것보다 보안 측면에서 유리하다.

 

2) 사용자 경험 개선

사용자가 애플리케이션마다 계정에 대한 비밀번호가 다를 수 있다. 그 비밀번호들을 다 관리하는 것이 쉬울까? oauth를 통해 인증을 하게 되면 하나의 계정으로 여러 애플리케이션을 이용할 수 있어 매우 편리해진다.

 

3) 세분화된 권한 부여

oauth는 사용자가 애플리케이션에 모든 정보를 제공하는 것이 아닌 특정 데이터 또는 기능만 접근할 수 있도록 권한을 제어할 수 있다.

 

3. oauth 동작 과정

 

1. 사용자 동의

  ▶ 사용자는 클라이언트(앱)에게 자신의 데이터를 사용하는 것에 대해 동의를 요청한다.

 

2. 인증 서버로 요청

  ▶ 클라이언트는 자원 소유자의 동의와 함께 인증 서버에 액세스 토큰을 요청하는데

  ▶ 이 때 클라이언트는 자신이 신뢰할 수 있는 애플리케이션임을 증명해야한다.

 

3. 액세스 토큰 발급

▶ 인증 서버는 자원 소유자가 동의한 범위 내에서 클라이언트에게 액세스 토큰을 발급합니다.

 

4. 자원 서버로 요청

▶ 클라이언트는 이 액세스 토큰을 사용하여 자원 서버에 접근 요청을 한다.

▶ 자원 서버는 토큰을 확인하고, 유효하면 요청한 자원(데이터)에 접근할 수 있도록 허용한다.

 

5. 데이터 제공

▶ 자원 서버는 액세스 토큰을 검증한 후, 요청한 데이터를 클라이언트에게 반환한다.

 

4. 버전

 

1. OAuth 1.0

▶ 초기 버전으로, 요청의 무결성을 보장하기 위해 HMAC-SHA1을 기본 암호화 방식으로 사용

필요에 따라 RSA-SHA1과 같은 공개 키 암호화 방식도 지원

▶ 그러나 복잡한 암호화때문에 구현이 까다로워 현재는 많이 사용되지 않습니다.

 

2. OAuth 2.0

▶ 현재 가장 널리 사용되는 버전

▶ OAuth 1.0의 복잡성을 줄이고  HTTPS를 사용하여 데이터를 암호화