Skip to main content

A Minimal Token-Based Auth for Django

Project description

Simple Token-based authentication.

Overview

A lot of people talk about having Token Auth for their REST APIs… but what does it actually mean? And what benefit is it?

The token is cryptographically signed chunk of data. In this case it contains the user ID, backend, and a timestamp of when it was issued.

This lets you generate and issue tokens to phone apps, services, etc, and not have to deal with logins, passwords, CSRF, etc.

Install

Add to settings.MIDDLEWARE, after the default authentication middleware:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'nap_token.middleware.NapTokenMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'cloudselect.middleware.CORSDefeat',
]

Usage

When you want to log in a user, call nap_token.get_auth_token(user), passing a User instance returned from django.contrib.auth.authenticate.

It will return a signed, timestamped token. The client need only pass this in a Authorization header, formatted as ‘Bearer {token}’, for the request to act as that user. If the token is absent, expired, or invalid, requset.user will fall back to the normal Session Based Auth.

Issuing Tokens

As a quick and dirty example of how to issue tokens, here’s an approach that will issue a token for a user who can log in:

from django.http import HttpResponse
from django.contrib.auth.views import LoginView

from nap_token import get_auth_token

class TokenView(LoginView):

    def form_valid(self, form):
        user = form.get_user()
        return HttpResponse(get_auth_token(user))

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nap-token-auth-0.1.2.tar.gz (3.1 kB view details)

Uploaded Source

File details

Details for the file nap-token-auth-0.1.2.tar.gz.

File metadata

File hashes

Hashes for nap-token-auth-0.1.2.tar.gz
Algorithm Hash digest
SHA256 30a9899d53215156beb5a10d28fa61255a20576792fd1aa1ba4e79448e2e479d
MD5 6f832e9a8d8cce9203a306fa86dae901
BLAKE2b-256 3a59a9276eba5d7c3832d5086781207fd4dad07265cb396a27e56e8554408950

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page