Skip to main content

Django Cas Client

Project description


CAS client for Django. This library requires Django 1.5 or above, and Python 2.6, 2.7, 3.4

Current version: 1.5.2

This is K-State's fork of the original and includes several additional features as well as features merged from


This project is registered on PyPi as django-cas-client. To install::

pip install django-cas-client==1.5.2

Add to URLs

Add the login and logout patterns to your main URLS conf.

import cas.views


path('admin/login/', cas.views.login, name='login'),
path('admin/logout/', cas.views.logout, name='logout'),

Add middleware and settings

Set your CAS server URL

CAS_SERVER_URL = "https://signin.somehwere/cas/"

Add cas to middleware classes


Add authentication backends


How to Contribute

Fork and branch off of the develop branch. Submit Pull requests back to kstateome:develop.

Run The Tests

All PRs must pass unit tests. To run the tests locally:

pip install -r requirements-dev.txt
python for CAS

Add the following to middleware if you want to use CAS::


Add these to to use the CAS Backend::

CAS_SERVER_URL = "Your Cas Server"

Additional Features

This fork contains additional features not found in the original:

  • Proxied Hosts
  • CAS Response Callbacks
  • CAS Gateway
  • Proxy Tickets (From Edmund Crewe)

Proxied Hosts

You will need to setup middleware to handle the use of proxies.

Add a setting PROXY_DOMAIN of the domain you want the client to use. Then add


This middleware needs to be added before the django common middleware.

CAS Response Callbacks

To store data from CAS, create a callback function that accepts the ElementTree object from the proxyValidate response. There can be multiple callbacks, and they can live anywhere. Define the callback(s) in


and create the functions in path/to/

def callbackfunction(tree):
    username = tree[0][0].text

    user, user_created = User.objects.get_or_create(username=username)
    profile, created = user.get_profile() = tree[0][1].text
    profile.position = tree[0][2].text

CAS Gateway

To use the CAS Gateway feature, first enable it in settings. Trying to use it without explicitly enabling this setting will raise an ImproperlyConfigured:


Then, add the gateway decorator to a view:

from cas.decorators import gateway

def foo(request):
    return render(request, 'foo/bar.html')

Custom Forbidden Page

To show a custom forbidden page, set CAS_CUSTOM_FORBIDDEN to a Otherwise, a generic HttpResponseForbidden will be returned.

Require SSL Login

To force the service url to always target HTTPS, set CAS_FORCE_SSL_SERVICE_URL to True.

Automatically Create Users on First Login

By default, a stub user record will be created on the first successful CAS authentication using the username in the response. If this behavior is not desired set CAS_AUTO_CREATE_USER to False.

Proxy Tickets

This fork also includes Edmund Crewe's proxy ticket patch.

You can opt out of the time delay sometimes caused by proxy ticket validation by setting:


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

django-cas-client-1.5.2.tar.gz (12.8 kB view hashes)

Uploaded Source

Built Distribution

django_cas_client-1.5.2-py2.py3-none-any.whl (16.8 kB view hashes)

Uploaded Python 2 Python 3

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