[Web] OAuth란?

해피몬·2024년 3월 15일
post-thumbnail

OAuth란? 🤔

OAuth (Open Authorization)는 애플리케이션 간 안전하게 인증과 권한을 위임할 수 있도록 도와주는 인증 프로토콜임. OAuth를 통해 사용자 정보에 대한 접근 권한을 다른 애플리케이션에 제공할 수 있으며, 비밀번호를 공유하지 않고도 안전하게 인증할 수 있음. 흔히 소셜 로그인을 제공할 때 사용하는 방법이 OAuth임.

OAuth의 주요 개념 💡

OAuth는 사용자 인증을 위해 여러 개념이 상호작용함. 주로 리소스 소유자, 클라이언트 애플리케이션, 권한 서버, 자원 서버의 네 가지 주요 구성 요소로 나뉨.

  • 리소스 소유자 (Resource Owner)
    사용자로, 개인 정보나 리소스를 소유한 사람임. 예를 들어, Google 계정을 가진 사용자를 의미함.
  • 클라이언트 애플리케이션 (Client Application)
    사용자 정보를 얻으려는 애플리케이션. 예를 들어, 특정 웹사이트가 Google을 통해 로그인하려고 할 때, 이 웹사이트가 클라이언트 애플리케이션이 됨.
  • 권한 서버 (Authorization Server)
    사용자의 권한을 검증하고, 접근 권한을 부여하는 서버. 예를 들어 Google의 OAuth 서버.
  • 자원 서버 (Resource Server)
    사용자의 데이터를 보관하고 있는 서버로, 클라이언트가 권한을 받으면 이 서버에서 데이터를 요청할 수 있음.

OAuth 동작 원리 🚦

1) 사용자 요청: 사용자가 클라이언트 애플리케이션(예: 웹사이트)에서 로그인을 시도함.
2) 사용자 동의: 클라이언트 애플리케이션은 권한 서버(예: Google)로 리디렉션하며, 사용자가 동의 화면에서 로그인 및 권한을 부여함.
3) 인가 코드 발급: 권한 서버는 사용자가 권한을 부여하면 클라이언트 애플리케이션에 인가 코드를 발급함.
4) 토큰 발급: 클라이언트 애플리케이션은 인가 코드를 권한 서버로 다시 보내고, 액세스 토큰을 발급받음.
5) 데이터 접근: 클라이언트 애플리케이션은 발급받은 액세스 토큰을 사용해 자원 서버에서 사용자 데이터를 요청하고, 필요한 정보를 얻음.

OAuth의 주요 용어와 종류 🔑

액세스 토큰 (Access Token)

액세스 토큰은 권한 서버가 클라이언트 애플리케이션에 부여하는 임시 키로, 이 토큰을 사용해 자원 서버에 데이터를 요청할 수 있음. 보통 짧은 유효 기간을 가짐.

리프레시 토큰 (Refresh Token)

리프레시 토큰은 액세스 토큰이 만료된 후 새로운 액세스 토큰을 발급받을 때 사용하는 토큰임. 사용자 재인증 없이도 새 액세스 토큰을 발급받을 수 있게 해 주기 때문에 보통 장기 유효 기간을 가짐.

OAuth 1.0과 OAuth 2.0

OAuth 1.0: 초기 OAuth 프로토콜로, 구현이 복잡하고 암호화 요구사항이 있었음.
OAuth 2.0: 현재 표준 OAuth 버전으로, 단순하고 유연하며 다양한 인증 방법을 지원함. 보안성과 확장성이 높아 많이 사용됨.

OAuth의 장단점 📈

장점

  • 보안성 강화: 비밀번호를 공유하지 않고도 인증할 수 있어 사용자 데이터가 안전하게 보호됨.
  • 편리한 사용자 경험: 소셜 로그인을 통해 쉽게 다른 애플리케이션과의 인증을 완료할 수 있음.
  • 확장성: 다양한 애플리케이션 간의 통합을 쉽게 구현할 수 있음.

단점

  • 복잡한 구현: OAuth 인증 프로세스는 설정과 구현이 다소 복잡할 수 있음.
  • 서드 파티에 의존: 인증에 대한 제어권을 다른 권한 서버(Google, Facebook 등)에 의존하므로 통제가 제한적일 수 있음.
profile
슬기로운개발생활🤖

0개의 댓글