Uber clone-3

Hyeseong·2023년 5월 2일
0

uber-clone

목록 보기
3/3

Table of Contents

  1. Authentication
  2. Authentication Classes
  3. Server Configuration
  4. Sign Up
  5. Log In
  6. Sanity Check

Authentication

인증은 사용자 데이터를 처리하는 모든 앱의 초석입니다. 이를 통해 사용자는 앱 내에서 개인 정보를 유지하면서 등록을 통해 제공되는 모든 기능에 액세스할 수 있습니다.

Authentication Classes

Django REST Framework(DRF)를 사용하면 선택할 수 있는 4가지 인증 클래스가 있습니다 .

  1. BasicAuthentication
  2. RemoteUserAuthentication
  3. SessionAuthentication
  4. TokenAuthentication
  1. BasicAuthentication의 경우에는 요청마다 client에서 user의 credentials을 보내게 됩니다. 이 경우 보안에 취약하여 유저 정보 노출 될 확률이 높습니다.

  2. RemoteUserAuthentication은 사용자의 신원 확인 책임을 제3자에게 수행하게 됩니다. 대부분의 경우 타사는 LDAP, CAS 또는 SAML과 같은 프로토콜을 지원하는 중앙 집중식 단일 로그인 서버입니다.

톺아보기 - 인증방식

LDAP, CAS, SAML은 모두 인증 프로토콜이며, 사용자 인증 및 권한 부여를 위한 목적으로 사용됩니다.

LDAP (Lightweight Directory Access Protocol)
LDAP는 경량 디렉터리 접근 프로토콜로, 디렉터리 정보를 조회 및 수정하는 프로토콜입니다. 사용자 인증 및 권한 부여를 위한 프로토콜은 아니지만, LDAP를 이용한 사용자 인증 및 권한 부여를 구현한 시스템들이 많이 있습니다.

LDAP는 트리 구조의 디렉터리 구조를 사용합니다. 디렉터리 구조에서 각 노드는 항목(entry)으로 표현되며, 항목은 다양한 속성(attribute)으로 구성됩니다. LDAP 서버에는 다양한 속성 정보가 저장되어 있으며, 사용자 인증을 위해서는 일반적으로 사용자 이름과 비밀번호를 확인합니다.

CAS (Central Authentication Service)
CAS는 웹 환경에서 싱글 사인온(SSO)을 구현하기 위한 프로토콜입니다. 사용자 인증 및 권한 부여를 위한 프로토콜입니다.

CAS는 클라이언트와 CAS 서버 간의 프로토콜로, 클라이언트는 CAS 서버로 사용자 이름과 비밀번호를 전송합니다. CAS 서버는 사용자 정보를 검증한 후, 성공적으로 검증되면 클라이언트에게 티켓(ticket)을 발급합니다. 클라이언트는 이 티켓을 서비스 제공자(SP)에게 전송하여 인증 및 권한 부여를 받습니다.

SAML (Security Assertion Markup Language)
SAML은 웹 환경에서 싱글 사인온(SSO)을 구현하기 위한 프로토콜입니다. 사용자 인증 및 권한 부여를 위한 프로토콜입니다.

SAML은 클라이언트와 서비스 제공자(SP) 간의 프로토콜로, 클라이언트는 SAML 서비스 제공자(SP)에게 인증 요청을 보냅니다. SAML 서비스 제공자(SP)는 클라이언트에게 SAML 응답(assertion)을 반환합니다. 이 SAML 응답(assertion)은 클라이언트에 대한 사용자 정보 및 권한 정보를 포함하고 있습니다. 클라이언트는 이 정보를 이용하여 다른 서비스 제공자(SP)에 대한 인증 및 권한 부여를 받습니다.

요약

LDAP, CAS, SAML은 모두 인증 프로토콜이며, 각각의 차이점은 다음과 같습니다.

  • 목적: LDAP는 디렉터리 서비스용, CAS는 SSO용, SAML은 클라우드 및 SSO용

  • 구현 방법: LDAP는 X.500 디렉터리 서비스 프로토콜을 기반으로 하며, CAS는 웹 애플리케이션 서버와 티켓 서버를 연결하여 구현하며, SAML은 XML 기반 교환 프로토콜을 기반으로 합니다.

  • 사용 방법: LDAP는 주로 내부 인증 및 권한 관리에 사용되며, CAS는 SSO를 제공하기 위한 프로토콜로 사용되며, SAML은 클라우드 애플리케이션 및 SSO를 지원하기 위해 사용됩니다

Server Configuration

Django REST Framework의 세션 인증과 djangorestframework-simplejwt의 JWTAuthentication 클래스를 모두 사용하도록 설정하겠습니다.

모바일과 데스크톱 브라우저를 모두 지원해야 합니다. 세션 인증은 서버 렌더링 정적 관리 사이트에 적합한 선택이며 토큰 인증은 API 인증에 이상적인 옵션입니다. server/taxi/settings.py 파일 하단에 다음을 추가합니다.

# server/taxi/settings.py

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    )
}

SIMPLE_JWT = {
    'ACCESS_TOKEN_LIFETIME': datetime.timedelta(minutes=60),
    'REFRESH_TOKEN_LIFETIME': datetime.timedelta(days=1),
    'USER_ID_CLAIM': 'id',
}

Sign Up

profile
어제보다 오늘 그리고 오늘 보다 내일...

0개의 댓글