Package: django-cas-client
django-casCAS client for Django.  This library requires Django 1.5 or above, and Python 2.6, 2.7, 3.4Current version: 1.5.3This isK-State's forkofthe originaland includesseveral additional featuresas well as features merged fromKTHse's django-cas2.Edmund Crewe's proxy ticket patch.InstallThis project is registered on PyPi as django-cas-client.  To install::pip install django-cas-client==1.5.3Add to URLsAdd 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 settingsSet your CAS server URLCAS_SERVER_URL = "https://signin.somehwere/cas/"Add cas to middleware classes'cas.middleware.CASMiddleware',Add authentication backendsAUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'cas.backends.CASBackend',
)How to ContributeFork and branch off of thedevelopbranch.  Submit Pull requests back tokstateome:develop.Run The TestsAll PRs must pass unit tests.  To run the tests locally:pip install -r requirements-dev.txt
python run_tests.pySettings.py for CASAdd the following to middleware if you want to use CAS::MIDDLEWARE_CLASSES = (
'cas.middleware.CASMiddleware',
)Add these tosettings.pyto use the CAS Backend::CAS_SERVER_URL = "Your Cas Server"
CAS_LOGOUT_COMPLETELY = True
CAS_PROVIDE_URL_TO_LOGOUT = TrueAdditional FeaturesThis fork contains additional features not found in the original:Proxied HostsCAS Response CallbacksCAS GatewayProxy Tickets (From Edmund Crewe)Proxied HostsYou will need to setup middleware to handle the use of proxies.Add a settingPROXY_DOMAINof the domain you want the client to use.  Then addMIDDLEWARE_CLASSES = (
'cas.middleware.ProxyMiddleware',
)This middleware needs to be added before the djangocommonmiddleware.CAS Response CallbacksTo 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) insettings.py:CAS_RESPONSE_CALLBACKS = (
    'path.to.module.callbackfunction',
    'anotherpath.to.module.callbackfunction2',
)and create the functions inpath/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 GatewayTo 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 = TrueThen, add thegatewaydecorator to a view:from cas.decorators import gateway

@gateway()
def foo(request):
    #stuff
    return render(request, 'foo/bar.html')Custom Forbidden PageTo show a custom forbidden page, setCAS_CUSTOM_FORBIDDENto apath.to.some_view.  Otherwise,
a genericHttpResponseForbiddenwill be returned.Require SSL LoginTo force the service url to always target HTTPS, setCAS_FORCE_SSL_SERVICE_URLtoTrue.Automatically Create Users on First LoginBy 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 setCAS_AUTO_CREATE_USERtoFalse.Proxy TicketsThis fork also includesEdmund 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