Integration Guide

Python / Django

Complete guide for integrating Python Django applications with CAS SSO

7 min Intermediate Python 3.9+

1. Installation

pip install cas-sso-client requests PyJWT

2. Django Settings

settings.py
CAS_CONFIG = {
    'SERVER_URL':    os.environ.get('CAS_SERVER_URL'),
    'CLIENT_ID':     os.environ.get('CAS_CLIENT_ID'),
    'CLIENT_SECRET': os.environ.get('CAS_CLIENT_SECRET'),
    'CALLBACK_URL':  os.environ.get('CAS_CALLBACK_URL'),
}

MIDDLEWARE = [
    # ...
    'cas_client.middleware.CasAuthMiddleware',
]

3. Middleware

cas_client/middleware.py
import requests
from django.conf import settings
from django.http import JsonResponse

class CasAuthMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response
        self.config = settings.CAS_CONFIG

    def __call__(self, request):
        if request.path.startswith('/cas/'):
            return self.get_response(request)

        token = request.headers.get('Authorization', '').replace('Bearer ', '')
        if not token:
            return JsonResponse({'error': 'Token required'}, status=401)

        resp = requests.post(
            f"{self.config['SERVER_URL']}/api/sso/validate",
            json={
                'token': token,
                'client_id': self.config['CLIENT_ID'],
                'client_secret': self.config['CLIENT_SECRET'],
            }
        )

        if resp.status_code == 200:
            request.cas_user = resp.json()['user']
            return self.get_response(request)

        return JsonResponse({'error': 'Invalid token'}, status=401)

4. View Protection

views.py
from django.http import JsonResponse

def dashboard(request):
    return JsonResponse({'user': request.cas_user})
Done! Access user via request.cas_user.

Next Steps