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 PyJWT2. 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.