OAuth / / 2024. 12. 17. 10:16

OAuth(Open Authorization)

OAuth(Open Authorization)는 제3자 서비스에게 사용자의 리소스 접근 권한을 위임하는 인증 및 인가 프로토콜입니다.

주로 소셜 로그인이나 API 접근 권한 부여에서 사용되며, 사용자 비밀번호를 공유하지 않고 안전하게 권한을 부여할 수 있도록 합니다.


OAuth의 핵심 개념

  1. 인증(Authentication)

    • 사용자가 누구인지 확인하는 과정입니다.
  2. 인가(Authorization)

    • 확인된 사용자에게 특정 리소스 접근 권한을 부여하는 과정입니다.
  3. Access Token

    • 인가가 완료된 후 제공되는 권한 부여 토큰입니다. 이 토큰을 통해 제3자 서비스가 사용자의 리소스에 접근합니다.
  4. Resource Owner (리소스 소유자)

    • 데이터를 소유한 사용자. 예: 사용자의 계정 정보.
  5. Client (클라이언트)

    • 리소스 소유자로부터 접근 권한을 위임받고 리소스를 요청하는 제3자 애플리케이션.
  6. Authorization Server (인가 서버)

    • 사용자 인증을 수행하고, 접근 권한(Access Token)을 발급하는 서버.
  7. Resource Server (리소스 서버)

    • 사용자 데이터를 제공하는 서버. 예: Google의 사용자 정보, Facebook의 프로필 사진.

OAuth 동작 방식 (예시: 소셜 로그인)

  1. 사용자 요청

    • 사용자가 클라이언트 애플리케이션(예: 웹사이트)에서 소셜 로그인 버튼을 클릭합니다.
  2. Authorization 요청

    • 클라이언트 애플리케이션은 사용자를 Authorization Server(예: Google, Facebook)로 리디렉션합니다.
  3. 사용자 인증 및 권한 부여

    • 사용자는 Authorization Server에서 자신의 계정으로 로그인하고 권한 부여를 승인합니다.
  4. Access Token 발급

    • Authorization Server는 클라이언트 애플리케이션에게 Access Token을 발급합니다.
  5. Resource Server에 요청

    • 클라이언트 애플리케이션은 Access Token을 사용해 Resource Server에 사용자 정보를 요청합니다.
  6. 리소스 반환

    • Resource Server는 Access Token이 유효하면 사용자 데이터를 반환합니다.

OAuth의 흐름: 권한 부여 방식

1. Authorization Code Grant (권한 코드 방식)

가장 많이 사용되는 방식입니다. 보안이 뛰어나다는 장점이 있습니다.

  • 동작 원리:
    1. 사용자가 인증 및 권한 부여를 승인하면 Authorization Code를 받습니다.
    2. 클라이언트는 Authorization Code를 사용해 Access Token을 발급받습니다.

2. Client Credentials Grant

서버 간 통신에서 사용됩니다. 사용자 인증이 필요 없는 경우에 사용됩니다.

3. Resource Owner Password Credentials Grant

사용자가 아이디와 비밀번호를 클라이언트에게 직접 입력하는 방식입니다.

  • 보안성이 낮아 거의 사용되지 않습니다.

4. Implicit Grant (Deprecated)

브라우저 기반 애플리케이션에서 사용되었지만 보안 이슈로 이제는 권장되지 않습니다.


OAuth 2.0과 OAuth 1.0의 차이

구분 OAuth 1.0 OAuth 2.0
보안성 복잡한 서명(Signature) 사용 Access Token과 HTTPS 기반으로 개선
단순성 상대적으로 복잡 더 간단하고 효율적인 구조
토큰 타입 액세스 토큰과 요청 토큰 구분 Access Token 중심
호환성 제한적 모바일, 웹 등 다양한 환경에서 사용 가능

OAuth 사용 사례

  1. 소셜 로그인

    • 사용자가 Google, Facebook, Naver, Kakao 계정으로 로그인할 수 있습니다.
  2. API 접근 권한 부여

    • 애플리케이션이 사용자의 리소스(예: Google Drive, GitHub 파일)에 접근할 때 OAuth를 통해 인증합니다.
  3. 외부 서비스와의 연동

    • Slack, Jira 같은 서비스에서 외부 플러그인을 설치할 때도 OAuth를 사용합니다.

결론

OAuth사용자의 인증과 인가를 안전하게 위임하는 프로토콜입니다.
Access Token을 통해 사용자 비밀번호를 공유하지 않고 리소스에 접근할 수 있습니다.
주요 사용 사례: 소셜 로그인, API 접근 권한 부여, 외부 서비스 연동.

'OAuth' 카테고리의 다른 글

OAuth 2.0 액세스 토큰 발급 방법  (0) 2024.12.17
Spring Authorization Server 구성  (0) 2024.12.17
Authorization Code  (0) 2024.12.17
Proof Key(PKCE)  (0) 2024.12.17
투명 토큰(Transparent Token)과 불투명 토큰(Opaque Token)  (1) 2024.12.17
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유