DRF - simple_JWT 기타설정

jeong_hyeon·2022년 5월 29일
0

Django_DRF

목록 보기
5/12
post-thumbnail
# Django project settings.py

from datetime import timedelta
...

SIMPLE_JWT = {
    'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5),
    'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
    'ROTATE_REFRESH_TOKENS': False,
    'BLACKLIST_AFTER_ROTATION': False,
    'UPDATE_LAST_LOGIN': False,

    'ALGORITHM': 'HS256',
    'SIGNING_KEY': SECRET_KEY,
    'VERIFYING_KEY': None,
    'AUDIENCE': None,
    'ISSUER': None,
    'JWK_URL': None,
    'LEEWAY': 0,

    'AUTH_HEADER_TYPES': ('Bearer',),
    'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION',
    'USER_ID_FIELD': 'id',
    'USER_ID_CLAIM': 'user_id',
    'USER_AUTHENTICATION_RULE': 'rest_framework_simplejwt.authentication.default_user_authentication_rule',

    'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),
    'TOKEN_TYPE_CLAIM': 'token_type',
    'TOKEN_USER_CLASS': 'rest_framework_simplejwt.models.TokenUser',

    'JTI_CLAIM': 'jti',

    'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp',
    'SLIDING_TOKEN_LIFETIME': timedelta(minutes=5),
    'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1),
}

ACCESS_TOKEN_LIFETIME
datetime.timedelta액세스 토큰이 유효한 기간을 지정하는 개체입니다 . 이 timedelta값은 토큰 생성 중 현재 UTC 시간에 추가되어 토큰의 기본 "exp" 클레임 값을 얻습니다.

REFRESH_TOKEN_LIFETIME
datetime.timedelta새로 고침 토큰이 유효한 기간을 지정하는 개체입니다 . 이 timedelta값은 토큰 생성 중 현재 UTC 시간에 추가되어 토큰의 기본 "exp" 클레임 값을 얻습니다.

ROTATE_REFRESH_TOKENS
로 설정하면 True새로 고침 토큰이 에 제출 TokenRefreshView되면 새 액세스 토큰과 함께 새 새로 고침 토큰이 반환됩니다. 이 새로운 새로 고침 토큰은 JSON 응답의 "새로고침" 키를 통해 제공됩니다. REFRESH_TOKEN_LIFETIME 새 새로 고침 토큰은 요청이 이루어진 현재 시간 에 설정의 timedelta를 추가하여 결정되는 갱신된 만료 시간을 갖 습니다. 블랙리스트 앱이 사용 중이고 BLACKLIST_AFTER_ROTATION설정이 로 설정되어 있으면 True새로 고침 보기에 제출된 새로 고침 토큰이 블랙리스트에 추가됩니다.

BLACKLIST_AFTER_ROTATION
로 설정하면 블랙리스트 앱이 사용 중이고 설정이 로 설정된 경우 True에 제출된 새로 고침 토큰 이 블랙리스트에 추가됩니다 . 이 설정을 사용하려면 설정 파일에 추가해야 합니다 .TokenRefreshViewROTATE_REFRESH_TOKENSTrue'rest_framework_simplejwt.token_blacklist',INSTALLED_APPS

블랙리스트 앱 에 대해 자세히 알아보세요 .

UPDATE_LAST_LOGIN
로 설정 True하면 auth_user 테이블의 last_login 필드가 로그인 시 업데이트됩니다(TokenObtainPairView).

경고: last_login을 업데이트하면 데이터베이스 트랜잭션 수가 크게 증가합니다. 보기를 남용하는 사람들은 서버를 느리게 할 수 있으며 이는 보안 취약점일 수 있습니다. 정말로 이것을 원한다면 최소한 DRF로 끝점을 조절하십시오.
ALGORITHM
토큰에 대한 서명/확인 작업을 수행하는 데 사용되는 PyJWT 라이브러리의 알고리즘입니다. 대칭 HMAC 서명 및 확인을 사용하려면 다음 알고리즘을 사용할 수 있습니다. 'HS256', 'HS384', 'HS512'. HMAC 알고리즘을 선택하면 SIGNING_KEY설정이 서명 키와 확인 키로 모두 사용됩니다. 이 경우 VERIFYING_KEY설정이 무시됩니다. 비대칭 RSA 서명 및 확인을 사용하려면 다음 알고리즘을 사용할 수 있습니다. 'RS256', 'RS384', 'RS512'. RSA 알고리즘을 선택하면 SIGNING_KEY설정을 RSA 개인 키가 포함된 문자열로 설정해야 합니다. 마찬가지로 VERIFYING_KEY설정은 RSA 공개 키가 포함된 문자열로 설정해야 합니다.

SIGNING_KEY
생성된 토큰의 콘텐츠에 서명하는 데 사용되는 서명 키입니다. HMAC 서명의 경우 이는 서명 프로토콜에 필요한 데이터 비트 수 이상을 포함하는 임의의 문자열이어야 합니다. RSA 서명의 경우 2048비트 이상의 RSA 개인 키가 포함된 문자열이어야 합니다. Simple JWT는 기본적으로 256비트 HMAC 서명을 사용하기 때문에 기본적으로 django 프로젝트 SIGNING_KEY에 대한 설정 값으로 설정됩니다. SECRET_KEY이것이 Simple JWT가 제공할 수 있는 가장 합리적인 기본값이지만 개발자는 이 설정을 django 프로젝트 비밀 키와 독립적인 값으로 변경하는 것이 좋습니다. 이렇게 하면 토큰이 손상된 경우 토큰에 사용되는 서명 키를 더 쉽게 변경할 수 있습니다.

VERIFYING_KEY
생성된 토큰의 내용을 확인하는 데 사용되는 확인 키입니다. ALGORITHM설정에 의해 HMAC 알고리즘이 지정된 경우 VERIFYING_KEY설정이 무시되고 SIGNING_KEY 설정 값이 사용됩니다. ALGORITHM설정에 의해 RSA 알고리즘이 지정된 VERIFYING_KEY경우 RSA 공개 키가 포함된 문자열로 설정을 설정해야 합니다.

AUDIENCE
청중은 생성된 토큰에 포함되거나 디코딩된 토큰에서 유효성이 확인된다고 주장합니다. 로 설정하면 None이 필드가 토큰에서 제외되고 유효성이 검사되지 않습니다.

ISSUER
발급자는 생성된 토큰에 포함되어 있고/있거나 디코딩된 토큰에서 검증되었다고 주장합니다. 로 설정하면 None이 필드가 토큰에서 제외되고 유효성이 검사되지 않습니다.

JWK_URL
JWK_URL은 토큰 서명을 확인하는 데 필요한 공개 키를 동적으로 확인하는 데 사용됩니다. 예를 들어 Auth0을 사용할 때 이것을 ' https://yourdomain.auth0.com/.well-known/jwks.json '으로 설정할 수 있습니다. 로 설정하면 None이 필드가 토큰 백엔드에서 제외되고 유효성 검사 중에 사용되지 않습니다.

LEEWAY
Leeway는 만료 시간에 약간의 여유를 주기 위해 사용됩니다. 이것은 초 또는 a의 정수일 수 있습니다 datetime.timedelta. 자세한 내용은 https://pyjwt.readthedocs.io/en/latest/usage.html#expiration-time-claim-exp 를 참조 하세요 .

AUTH_HEADER_TYPES
인증이 필요한 보기에 대해 승인될 인증 헤더 유형입니다. 예를 들어 의 값은 'Bearer'인증이 필요한 보기가 다음 형식의 헤더를 검색함을 의미합니다 . 이 설정에는 가능한 헤더 유형(예: )의 목록이나 튜플도 포함될 수 있습니다 . 이러한 방식으로 목록이나 튜플을 사용하고 인증에 실패하면 컬렉션의 첫 번째 항목이 응답에서 "WWW-Authenticate" 헤더를 작성하는 데 사용됩니다.Authorization: Bearer ('Bearer', 'JWT')

AUTH_HEADER_NAME
인증에 사용할 인증 헤더 이름입니다. 기본값은 요청의 헤더를 HTTP_AUTHORIZATION수락하는 것 입니다. Authorization예를 들어 X_Access_Token요청 헤더에 사용하려면 설정에 포함 AUTH_HEADER_NAME되도록 지정하십시오 HTTP_X_ACCESS_TOKEN.

USER_ID_FIELD
사용자를 식별하기 위해 생성된 토큰에 포함될 사용자 모델의 데이터베이스 필드입니다. 이 설정의 값은 초기 값이 선택되면 일반적으로 변경되지 않는 필드를 지정하는 것이 좋습니다. 예를 들어, "사용자 이름" 또는 "이메일" 필드를 지정하는 것은 계정의 사용자 이름이나 이메일이 주어진 서비스의 계정 관리가 어떻게 설계되었는지에 따라 변경될 수 있으므로 잘못된 선택이 될 것입니다. 이렇게 하면 해당 사용자 이름을 사용자 식별자로 사용하는 기존 토큰이 여전히 유효한 동안 이전 사용자 이름으로 새 계정을 생성할 수 있습니다.

USER_ID_CLAIM
사용자 식별자를 저장하는 데 사용되는 생성된 토큰의 클레임입니다. 예를 들어 의 설정 값 'user_id'은 생성된 토큰에 사용자의 식별자가 포함된 "user_id" 클레임이 포함됨을 의미합니다.

USER_AUTHENTICATION_RULE
사용자가 인증할 수 있는지 여부를 결정하기 위해 호출 가능합니다. 이 규칙은 유효한 토큰이 처리된 후에 적용됩니다. 사용자 개체는 인수로 콜러블에 전달됩니다. 기본 규칙은 is_active 플래그가 여전히 있는지 확인하는 것 True입니다. True콜러블은 승인된 경우 부울을 반환해야 하며 , False그렇지 않으면 401 상태 코드가 됩니다.

AUTH_TOKEN_CLASSES
인증을 증명할 수 있는 토큰 유형을 지정하는 클래스에 대한 점 경로 목록입니다. 이에 대한 자세한 내용은 아래 "토큰 유형" 섹션을 참조하십시오.

TOKEN_TYPE_CLAIM
토큰 유형을 저장하는 데 사용되는 클레임 ​​이름입니다. 이에 대한 자세한 내용은 아래 "토큰 유형" 섹션을 참조하십시오.

JTI_CLAIM
토큰의 고유 식별자를 저장하는 데 사용되는 클레임 ​​이름입니다. 이 식별자는 블랙리스트 앱에서 해지된 토큰을 식별하는 데 사용됩니다. 어떤 경우에는 그러한 값을 저장하기 위해 기본 "jti" 클레임 외에 다른 클레임을 사용해야 할 수도 있습니다.

TOKEN_USER_CLASS
검증된 토큰으로 지원되는 상태 비저장 사용자 개체입니다. JWTStatelessUserAuthentication 인증 백엔드에만 사용됩니다. 값은 의 하위 클래스에 대한 점선 경로 rest_framework_simplejwt.models.TokenUser이며 기본값이기도 합니다.

SLIDING_TOKEN_LIFETIME
datetime.timedelta슬라이딩 토큰이 인증을 증명하는 데 유효한 기간을 지정하는 개체입니다 . 이 timedelta값은 토큰 생성 중 현재 UTC 시간에 추가되어 토큰의 기본 "exp" 클레임 값을 얻습니다. 이에 대한 자세한 내용은 아래의 "슬라이딩 토큰" 섹션에서 확인하세요.

SLIDING_TOKEN_REFRESH_LIFETIME
datetime.timedelta슬라이딩 토큰을 새로 고칠 수 있는 기간을 지정하는 개체입니다 . 이 timedelta값은 토큰 생성 중 현재 UTC 시간에 추가되어 토큰의 기본 "exp" 클레임 값을 얻습니다. 이에 대한 자세한 내용은 아래의 "슬라이딩 토큰" 섹션에서 확인하세요.

SLIDING_TOKEN_REFRESH_EXP_CLAIM
슬라이딩 토큰의 새로 고침 기간 만료 시간을 저장하는 데 사용되는 클레임 ​​이름입니다. 이에 대한 자세한 내용은 아래의 "슬라이딩 토큰" 섹션에서 확인하세요.

0개의 댓글