Skip to main content
# 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.5.0

This is [K-State's fork](https://github.com/kstateome/django-cas) of [the original](https://bitbucket.org/cpcc/django-cas/overview) and includes [several additional features](https://github.com/kstateome/django-cas/#additional-features) as well as features merged from

* [KTHse's django-cas2](https://github.com/KTHse/django-cas2).
* [Edmund Crewe's proxy ticket patch](http://code.google.com/r/edmundcrewe-proxypatch/source/browse/django-cas-proxy.patch).


## Install

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

pip install django-cas-client==1.5.0


### Add to URLs

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

import cas.views

...

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

'cas.middleware.CASMiddleware',


### Add authentication backends

AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'cas.backends.CASBackend',
)

## 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 run_tests.py


## Settings.py for CAS

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

MIDDLEWARE_CLASSES = (
'cas.middleware.CASMiddleware',
)


Add these to ``settings.py`` to use the CAS Backend::


CAS_SERVER_URL = "Your Cas Server"
CAS_LOGOUT_COMPLETELY = True
CAS_PROVIDE_URL_TO_LOGOUT = True

# 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

MIDDLEWARE_CLASSES = (
'cas.middleware.ProxyMiddleware',
)

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 ``settings.py``:

CAS_RESPONSE_CALLBACKS = (
'path.to.module.callbackfunction',
'anotherpath.to.module.callbackfunction2',
)

and create the functions in ``path/to/module.py``:

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

user, user_created = User.objects.get_or_create(username=username)
profile, created = user.get_profile()

profile.email = tree[0][1].text
profile.position = tree[0][2].text
profile.save()


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

CAS_GATEWAY = True

Then, add the ``gateway`` decorator to a view:

from cas.decorators import gateway

@gateway()
def foo(request):
#stuff
return render(request, 'foo/bar.html')


## Custom Forbidden Page

To show a custom forbidden page, set ``CAS_CUSTOM_FORBIDDEN`` to a ``path.to.some_view``. 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](http://code.google.com/r/edmundcrewe-proxypatch/source/browse/django-cas-proxy.patch).

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

CAS_PGT_FETCH_WAIT = False

Metadata

Release files for django-cas-client 1.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-cas-client 1.5.0
File Size Uploaded Provenance Actions
django-cas-client-1.5.0.tar.gz 12.8 kB Without provenance Details for django-cas-client-1.5.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for django-cas-client 1.5.0
File Interpreter ABI Platform Actions
django_cas_client-1.5.0-py2.py3-none-any.whl Python 3, Python 2 none any Details for django_cas_client-1.5.0-py2.py3-none-any.whl

Total release size: 31.3 kB

Release files / django-cas-client-1.5.0.tar.gz

Download URL django-cas-client-1.5.0.tar.gz
Size 12.8 kB
Tags Source
SHA-256 checksum
How to use checksums
f1b3106447c4e0920ffaf9a7d8fd63829c7105e88b89bbdc90fbf65112897131
BLAKE2b-256 checksum
How to use checksums
1d9529a532d638292b2f7568b7b6d2e1cd60d761ae242b06532a884c2a963f91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Python-urllib/2.7

Release files / django_cas_client-1.5.0-py2.py3-none-any.whl

Download URL django_cas_client-1.5.0-py2.py3-none-any.whl
Size 18.5 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
6d71d59db35f8a7677ee654dc9d4eac5c8aea3205273710fb71e077d139f6f7d
BLAKE2b-256 checksum
How to use checksums
1840853702431cedfb4f0acc9ae91fda8d289e3922532e22004176f565b74f43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Python-urllib/2.7

Security for django-cas-client 1.5.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page