Skip to content
K-State's maintained version of django-cas
Find file
Pull request Compare This branch is 28 commits ahead, 109 commits behind kstateome:develop.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Code Health

CAS client for Django. This is K-State's fork of the original, which lives at This fork is actively maintaned and includes several new features.

Current version: 0.8.5


See the document at Bitbucket 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 django_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.

Proxy Tickets

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

Something went wrong with that request. Please try again.