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

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

Install

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

pip install django-cas-client==1.5.3

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.

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

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.3
File Size Uploaded
django-cas-client-1.5.3.tar.gz 13.0 kB Details

Built distribution (wheel)

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

Total release size: 29.9 kB

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

Download URL django-cas-client-1.5.3.tar.gz
Size 13.0 kB
Tags Source
SHA-256 checksum
How to use checksums
3eba0bb8933c8a9297050446aac95fd7761ae36dc7b9c6ed7790d110070f2ac2
BLAKE2b-256 checksum
How to use checksums
0ee3bbb58ae5caf7ac59db4961c57ff5b0039c69708ca3d43ef6b41833cb3c7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/2.7.3

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

Download URL django_cas_client-1.5.3-py2.py3-none-any.whl
Size 16.9 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
fba4615750bcc44bac8ead056f74342801550d2cc1a1e8a25eba6ed65d051aad
BLAKE2b-256 checksum
How to use checksums
fe7321b2fa94a7008ef74b91c059af1bc9867a12f8d440c5c0ea4a082f9cc29a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/2.7.3

Release history Release notifications | RSS feed

This release

1.5.3 This release

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

1 release file

1.0.0

1 release file

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