Skip to main content

django-cas-sso

Code Health

CAS client for Django. This is K-State's fork of the original, which lives at https://bitbucket.org/cpcc/django-cas/overview. This fork is actively maintaned and includes several new features.

Current version: 1.2.8

https://github.com/kstateome/django-cas

Install

See the document at Bitbucket

https://bitbucket.org/cpcc/django-cas/overview

Settings.py for CAS

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

MIDDLEWARE = (
'django_cas.middleware.CASMiddleware',
)

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

CAS_SERVER_URL = "Your Cas Server"
CAS_LOGOUT_COMPLETELY = True

To disable CAS authentication for the entire django admin app, you should use the CAS_ADMIN_AUTH parameter::

CAS_ADMIN_AUTH = False

Url namespace

Include django_cas urls :

  • if your django version is 1.8 or older (defining the namespace "django_cas" is required) :

    		url(r'your-base_uri/', include('django_cas.urls', namespace='django_cas'))
    
  • for version >= 1.9 (a default namespace "django_cas" will be set but you can set yours if you want) :

    		url(r'your-base_uri/', include('django_cas.urls'))
    

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 = (
'django_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 dict 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(attribute_dict):
	# direct access
    username = attribute_dict.get('username')

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

	# ldap monovalued field
    profile.email = attribute_dict.get('mail',[''])[0]
	# ldap multivalued field
    profile.affiliations = attribute_dict.get('eduPersonAffiliation',[])
    profile.save()

Custom User creation

If automated user creation is enabled (CAS_USER_CREATION = True), you can define a custom user creation function.

Give its path to the settings file like this:

CAS_USER_CREATION_CALLBACK = (
	'path.to.module.user_creation_function',
)

Provide the function in path/to/module.py, which receive user data as a list of two items: [app_user_model, user_attributes_dict] and return created user instance:

def user_creation_function(user_data):
	user_model, user_attributes = user_data
	username = user_attributes['username']
	email = user_attributes.get('email', '')
	return user_model.objects.create_user(username, email)

With default settings ticket verification provide a dict of all attributes defined in your CAS server configuration file. If CAS_VERSION setting is lower than 3 then dict contains only the username.

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

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

Release files for django-cas-sso 1.2.9

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-sso 1.2.9
File Size Uploaded
django_cas_sso-1.2.9.tar.gz 16.2 kB Details

Built distribution (wheel)

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

Total release size: 34.7 kB

Release files / django_cas_sso-1.2.9.tar.gz

Download URL django_cas_sso-1.2.9.tar.gz
Size 16.2 kB
Tags Source
SHA-256 checksum
How to use checksums
529e8f7cb8958715d746b7df001afc53dfbe63f3ab005f3555f983c3588eabb9
BLAKE2b-256 checksum
How to use checksums
0cccdb35f54357ec081a2481d3cfa91048e5a7167ced1d3d1f25232bba210712
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release files / django_cas_sso-1.2.9-py2.py3-none-any.whl

Download URL django_cas_sso-1.2.9-py2.py3-none-any.whl
Size 18.5 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
da532ff704b782973091e743b5cff9ca7c5f72342e753bad7d1c89c0bada9ae5
BLAKE2b-256 checksum
How to use checksums
09acb6641a41fbad3b2a896d6b27b02d3a9fba867751beb0a12d525fba1e5245
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release

1.2.9 This release

2 release files

1.2.8

1 release file

1.2.7

2 release files

1.2.6

1 release file

1.2.5

1 release file

1.2.4

1 release file

1.1.10

1 release file

1.1.9

2 release files

1.1.8

2 release files

1.1.7

1 release file

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

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