skip to navigation
skip to content

django-cas-client 1.2.0

Django Cas Client

# django-cas

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

Current version: 1.2.0

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

* [KTHse's django-cas2](
* [Edmund Crewe's proxy ticket patch](

## Install

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

pip install django-cas-client==1.2.0

### Add to URLs

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

url(r'^accounts/login/$', 'cas.views.login', name='login'),
url(r'^accounts/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

## 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 ``Flase``.

## 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:

File Type Py Version Uploaded on Size
django-cas-client-1.2.0.tar.gz (md5) Source 2015-05-29 11KB
django_cas_client-1.2.0-py2.py3-none-any.whl (md5) Python Wheel 2.7 2015-05-29 17KB