Django/DRF

[Authentication] DRF Authentication, Permission (인증, 권한)

Jong_seoung 2024. 3. 20. 11:21
반응형

DRF에서는 Authentication(인증)과 Permission(권한)을 효과적으로 관리할 수 있다.

 

Authentication (인증)

인증은 사용자가 시스템에 로그인하고 자원에 엑세스할 수 있는지 확인할 수 있는 과정으로 DRF에서는 여러 가지 인증 방법을 제공한다.

 

DRF의 인증 방법

1. BasciAuthentication

  • HTTP 제어 header로 넘긴 ID와 Password를 base64로 encoding하는 방법이다.
  • 사용자 이름과 비밀번호가 base64로 인코깅 되어 전송되기 때문에 매우 간단하지만 보안상의 위협이 있을 수 있다. 
  • HTTPS와 같은 보안 프로토콜과 함께 사용하는 것이 좋다.

2. TokenAuthentication

  • 클라이언트가 서버에 인증 요청을 보내면 서버가 해당 사용자에 대한 토큰을 생성하고 반환하는 방식이다.
  • 클라이언트는 이 토큰을 이용하여 후속 요청을 보냄으로써 인증을 유지한다.
  • 보안성이 높고, 클라이언트와 서버간의 독립성을 유지할 수 있어 client-server 관계에서 많이 사용한다.

3. SessionAuthentication

  • 사용자가 로그인하면 서버측에 해당 사용자의 세션 정보를 저장하고 사용하여 인증하는 방식이다.
  • 일반적으로는 쿠키를 사용하여 세션 ID를 클라이언트에 저장하고, 이를 서버에 전달하여 인증한다.
  • 주로 웹 어플리케이션에서 사용하며, Django의 주요 인증 방식 중 하나이다.

4. RemoteAuthentication

  • 사용자 정보가 다른 서비스에서 관리되는 경우에 사용된다.
  • OAuth나 LDAP과 같은 외부 인증 서비스를 이용해 인증하는 경우가 해당된다.
  • 클라이언트는 원격 서비스로 부터 인증을 수행하고 인증된 사용자는 토큰 또는 기타 정보를 받아서 사용한다.

5. Custom Authentication

  • 개발자가 직접 인증 방식을 정의하여 사용하는 방식이다. 
  • DRF에서는 사용자 정의 인증 클래스를 만들어서 인증 로직을 사용자가 원하는 대로 구현할 수 있다.
  • 특정 시스템이나 요구 사항에 맞는 유연한 인증 방식을 구현할 수 있다.

 

 

Permission

권한은 특정 서비스를 어느정도로 이용할 수 있는지에 대한 권한이다.

 

DRF의 Permisson

1. AllowAny

  • 모든 사용자가 자원에 접근할 수 있도록 허용하는 권한이다.
  • 인증된 사용자와 비인증된 사용자에게 모두 적용된다.

2. IsAuthenticated 

  • 인증된 사용자만 자원에 접근할 수 있도록 허용하는 권한이다.

3. IsAdminUser

  • 관리자 권한을 가진 사용자만 자원에 접근할 수 있도록 허용하는 권한이다.
  • 기본적으로 Django에서는 is_staff속성을 사용한다.

4. IsAuthenticatedOrReadOnly

  • 인증된 사용자는 자원을 읽고 쓸 수 있지만, 인증되지 않은 사용자는 읽기만 가능하다.

5. DjangoModelPermissions 

  • Django의 모델의 권한을 기반으로 하는 권한이다. 
  • 각 요청에 대해서 Django의 기본 권한 시스템(django.contrib.auth)을 사용하여 권한을 부여한다.

6. DjangoModelPermissionsOrAnonReadOnly

  • Django모델의 권한을 기반으로 하는 권한이지만, 인증되지 않은 사용자에게는 읽기 전용 권한을 부여한다.

7. DjangoObjectPermissions

  • 개별 개체에 대한 권한을 부여하기 위해 Django의 객체 수준 권한 시스템을 기반으로 하는 권한이다.

8. Custom Permissions 

  • 사용자 정의 권한 클래스를 만들어서 특정 요구에 맞게 동작하도록 조정할 수 있다.

 

 

출처

 

Authentication - Django REST framework

 

www.django-rest-framework.org

 

Permissions - Django REST framework

 

www.django-rest-framework.org

 

[D.R.F] 게시판에 Authentication과 Permission 적용하기

안녕하세요 (ง •_•)ง 오늘은 지난 시간에 실습했던 게시판 CRUD에 이어 authentication과 permission에 대해 알아보도록 하겠습니다. 게시판 CRUD 구현에 대한 부분은 아래의 링크를 참고해주세요! [D.R

wisdom-990629.tistory.com

 

반응형