OAuth1.0 과 OAuth2.0

2024. 3. 21. 12:34·여러가지/이것저것

OAuth는 오픈 스탠다드 인증 프로토콜로, 사용자가 서드파티 애플리케이션에게 자신의 웹 서비스의 리소스에 대한 접근 권한을 제공할 수 있게 해줍니다. OAuth를 사용하면 사용자는 자신의 로그인 정보를 제3의 애플리케이션과 공유하지 않고도, 그 애플리케이션에게 특정 정보에 접근하거나 특정 기능을 실행할 권한을 부여할 수 있습니다.

OAuth의 핵심 개념

  • 리소스 소유자(Resource Owner): 보통 최종 사용자로, 보호되는 리소스에 대한 접근 권한을 부여할 수 있는 역할입니다.
  • 리소스 서버(Resource Server): 사용자의 정보를 보유하고 있는 서버로, 보호된 리소스를 호스팅합니다. 리소스 서버는 액세스 토큰을 통해 보호된 리소스에 대한 접근을 제어합니다.
  • 클라이언트(Client): 사용자 대신 리소스에 접근을 요청하는 어플리케이션(예: 웹사이트, 모바일 앱)입니다.
  • 인증 서버(Authorization Server): 클라이언트에게 액세스 토큰을 발급하는 서버로, 사용자의 승인을 받아 이를 처리합니다.

OAuth 작동 방식

  1. 사용자 인증: 사용자가 클라이언트 애플리케이션을 통해 서비스에 로그인합니다.
  2. 권한 요청: 클라이언트 애플리케이션은 리소스 소유자의 승인을 요청합니다. 사용자는 특정 리소스에 대한 접근 권한을 클라이언트에게 부여할 수 있습니다.
  3. 권한 부여: 사용자가 클라이언트에게 접근 권한을 부여하면, 인증 서버는 클라이언트에게 권한 부여 코드를 제공합니다.
  4. 액세스 토큰 요청: 클라이언트는 받은 권한 부여 코드를 인증 서버에 제시하여 액세스 토큰을 요청합니다.
  5. 액세스 토큰 발급 및 사용: 인증 서버는 클라이언트의 요청을 검증한 후, 액세스 토큰을 발급합니다. 클라이언트는 이 토큰을 사용하여 리소스 서버에 접근합니다.
  6. 리소스 접근: 리소스 서버는 액세스 토큰을 검증한 후, 요청된 리소스에 대한 접근을 허용합니다.

OAuth 버전

  • OAuth 1.0: 초기 버전으로, 복잡한 서명 과정을 포함하여 보안을 강화하였으나, 구현의 복잡성으로 인해 널리 사용되지 않았습니다.
  • OAuth 2.0: OAuth 1.0의 단점을 개선하고 확장성과 유연성을 높인 버전입니다. 현재 가장 널리 사용되는 버전으로, 다양한 인증 플로우를 지원하여 다양한 시나리오에 적용 가능합니다.

OAuth는 인증 및 권한 부여 프로세스를 표준화함으로써, 사용자 데이터의 보안을 강화하고, 개발자가 안전하게 서비스를 제공할 수 있는 방법을 제시합니다.


1.0 vs 2.0

OAuth 1.0과 OAuth 2.0은 인증 및 권한 부여를 위한 두 가지 주요 버전의 OAuth 프로토콜입니다. 두 버전 사이에는 여러 중요한 차이점이 있으며, 이는 보안, 구현의 용이성, 사용 사례의 유연성 등 여러 면에서 나타납니다.

OAuth 1.0의 특징

  • 서명 방식을 사용한 보안: OAuth 1.0은 HTTP 요청에 대한 서명을 생성하여 데이터 무결성과 메시지 인증을 보장합니다. 이 서명 과정은 토큰과 비밀을 사용하여 수행되며, 중간자 공격을 방지하는 데 도움이 됩니다.
  • 비밀키 필요: OAuth 1.0에서는 소비자 비밀(consumer secret)과 토큰 비밀(token secret)이 모두 필요합니다. 이러한 비밀키는 인증 과정에서 서명을 생성하는 데 사용됩니다.
  • 통신 프로토콜 제한: OAuth 1.0은 보안을 위해 HTTPS를 필수로 요구하지 않지만, 서명 메커니즘이 보안을 제공합니다. 그러나 이는 구현을 복잡하게 만들 수 있습니다.

OAuth 2.0의 특징

  • 보안 메커니즘의 유연성: OAuth 2.0은 SSL/TLS(HTTPS)를 통한 보안 통신을 권장합니다. 특정 서명 메커니즘을 요구하지 않으며, 보안은 주로 전송 계층에서 처리됩니다.
  • 다양한 인증 플로우 지원: OAuth 2.0은 여러 인증 플로우(예: 권한 부여 코드 플로우, 암시적 플로우, 리소스 소유자 비밀번호 자격증명 플로우, 클라이언트 자격증명 플로우)를 지원하여 다양한 시나리오와 애플리케이션 유형에 맞게 선택할 수 있게 합니다.
  • 구현의 용이성: OAuth 2.0은 OAuth 1.0에 비해 구현이 더 단순하고 유연합니다. 이는 개발자가 OAuth를 더 쉽게 적용할 수 있게 하며, 다양한 환경과 애플리케이션에 맞게 조정할 수 있습니다.
  • 확장성: OAuth 2.0은 확장 가능한 프레임워크를 제공합니다. 새로운 인증 방식이나 플로우를 OAuth 프로토콜에 통합할 수 있도록 설계되었습니다.

OAuth 1.0과 2.0의 주요 차이점 요약

  • 보안 메커니즘: OAuth 1.0은 서명을 통한 보안 메커니즘을 사용하는 반면, OAuth 2.0은 HTTPS를 통한 보안을 권장합니다.
  • 구현 복잡성: OAuth 1.0은 서명 과정으로 인해 구현이 더 복잡한 반면, OAuth 2.0은 구현이 더 간단하고 유연합니다.
  • 인증 플로우의 다양성: OAuth 2.0은 다양한 인증 플로우를 제공하여, 더 넓은 범위의 애플리케이션과 사용 사례를 지원합니다.
  • 확장성: OAuth 2.0은 보다 확장 가능한 프레임워크를 제공하여, 새로운 인증 방식이나 플로우를 쉽게 추가할 수 있습니다.

OAuth 2.0은 이러한 차이점들로 인해 널리 채택되고 있으며, 현대 웹 및 모바일 애플리케이션에서 사용자 인증과 권한 부여의 표준 방식으로 자리잡았습니다.

저작자표시 (새창열림)

'여러가지 > 이것저것' 카테고리의 다른 글

SQL Injection  (0) 2024.03.21
OAuth와 JWT 차이  (2) 2024.03.21
JWT란  (0) 2024.03.21
단방향 암호화  (0) 2024.03.21
비대칭키, 대칭키 암호화  (0) 2024.03.21
'여러가지/이것저것' 카테고리의 다른 글
  • SQL Injection
  • OAuth와 JWT 차이
  • JWT란
  • 단방향 암호화
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (284)
      • 여러가지 (108)
        • 알고리즘 & 자료구조 (72)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (2)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (38)
        • 파이썬 (30)
        • 자바 (3)
        • 스프링부트 (5)
      • 운영체제 (0)
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (2)
        • 도커 (2)
        • AWS (0)
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (0)
        • 정보처리기사 (0)
      • 재태크 (5)
        • 암호화폐 (5)
        • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    EC2
    OOP
    프로그래머스
    FastAPI
    파이썬
    #개발자포트폴리오 #개발자이력서 #개발자취업 #개발자취준 #코딩테스트 #항해99 #취리코 #취업리부트코스
    SAA
    RDS
    DP
    java
    Spring WebFlux
    Redis
    reactor
    Spring Boot
    Docker-compose
    자바
    AWS
    완전탐색
    spring
    취업리부트
    항해99
    ecs
    docker
    celery
    WebFlux
    Python
    mybatis
    시험
    그리디
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
OAuth1.0 과 OAuth2.0
상단으로

티스토리툴바