django-cas-sso


Namedjango-cas-sso JSON
Version 1.2.8 PyPI version JSON
download
home_pagehttp://github.com/unistra/django-cas/
SummaryDjango Cas SSO Client (inherited from django-cas)
upload_time2023-06-29 07:45:03
maintainerdi-dip-unistra
docs_urlNone
authordi-dip-unistra
requires_python
licenseMIT
keywords django cas sso
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage No coveralls.
            # django-cas-sso

[![Code Health](https://landscape.io/github/unistra/django-cas/master/landscape.svg?style=flat)](https://landscape.io/github/unistra/django-cas/master)

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

            

Raw data

            {
    "_id": null,
    "home_page": "http://github.com/unistra/django-cas/",
    "name": "django-cas-sso",
    "maintainer": "di-dip-unistra",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "di-dip@unistra.fr",
    "keywords": "django,cas,sso",
    "author": "di-dip-unistra",
    "author_email": "di-dip@unistra.fr",
    "download_url": "https://files.pythonhosted.org/packages/55/5f/6afd1d0933005e49fd0ce0484a1638652934000559aa2f0d48581ad3faf4/django-cas-sso-1.2.8.tar.gz",
    "platform": null,
    "description": "# django-cas-sso\n\n[![Code Health](https://landscape.io/github/unistra/django-cas/master/landscape.svg?style=flat)](https://landscape.io/github/unistra/django-cas/master)\n\nCAS client for Django. This is K-State's fork of the original, which lives at\nhttps://bitbucket.org/cpcc/django-cas/overview. This fork is actively maintaned and\nincludes several new features.\n\nCurrent version: 1.2.8\n\nhttps://github.com/kstateome/django-cas\n\n## Install\n\nSee the document at Bitbucket\n\nhttps://bitbucket.org/cpcc/django-cas/overview\n\n## Settings.py for CAS\n\nAdd the following to middleware if you want to use CAS::\n\n    MIDDLEWARE = (\n    'django_cas.middleware.CASMiddleware',\n    )\n\nAdd these to `settings.py` to use the CAS Backend::\n\n    CAS_SERVER_URL = \"Your Cas Server\"\n    CAS_LOGOUT_COMPLETELY = True\n\nTo disable CAS authentication for the entire django admin app, you should use the `CAS_ADMIN_AUTH` parameter::\n\n    CAS_ADMIN_AUTH = False\n\n## Url namespace\n\nInclude `django_cas` urls :\n\n- if your django version is 1.8 or older (defining the namespace \"django_cas\" is required) :\n\n      \t\turl(r'your-base_uri/', include('django_cas.urls', namespace='django_cas'))\n\n- for version >= 1.9 (a default namespace \"django_cas\" will be set but you can set yours if you want) :\n\n      \t\turl(r'your-base_uri/', include('django_cas.urls'))\n\n# Additional Features\n\nThis fork contains additional features not found in the original:\n\n- Proxied Hosts\n- CAS Response Callbacks\n- CAS Gateway\n- Proxy Tickets (From Edmund Crewe)\n\n## Proxied Hosts\n\nYou will need to setup middleware to handle the use of proxies.\n\nAdd a setting `PROXY_DOMAIN` of the domain you want the client to use. Then add\n\n    MIDDLEWARE = (\n    'django_cas.middleware.ProxyMiddleware',\n    )\n\nThis middleware needs to be added before the django `common` middleware.\n\n## CAS Response Callbacks\n\nTo store data from CAS, create a callback function that accepts the dict from the\nproxyValidate response. There can be multiple callbacks, and they can live anywhere. Define the\ncallback(s) in `settings.py`:\n\n    CAS_RESPONSE_CALLBACKS = (\n        'path.to.module.callbackfunction',\n        'anotherpath.to.module.callbackfunction2',\n    )\n\nand create the functions in `path/to/module.py`:\n\n    def callbackfunction(attribute_dict):\n    \t# direct access\n        username = attribute_dict.get('username')\n\n        user, user_created = User.objects.get_or_create(username=username)\n        profile, created = user.get_profile()\n\n    \t# ldap monovalued field\n        profile.email = attribute_dict.get('mail',[''])[0]\n    \t# ldap multivalued field\n        profile.affiliations = attribute_dict.get('eduPersonAffiliation',[])\n        profile.save()\n\n### Custom User creation\n\nIf automated user creation is enabled (`CAS_USER_CREATION = True`), you can define a custom user creation function.\n\nGive its path to the settings file like this:\n\n    CAS_USER_CREATION_CALLBACK = (\n    \t'path.to.module.user_creation_function',\n    )\n\nProvide the function in `path/to/module.py`,\nwhich receive user data as a list of two items: `[app_user_model, user_attributes_dict]`\nand return created user instance:\n\n    def user_creation_function(user_data):\n    \tuser_model, user_attributes = user_data\n    \tusername = user_attributes['username']\n    \temail = user_attributes.get('email', '')\n    \treturn user_model.objects.create_user(username, email)\n\nWith default settings ticket verification provide a dict of all attributes defined in your CAS server configuration file.\nIf `CAS_VERSION` setting is lower than 3 then dict contains only the username.\n\n## CAS Gateway\n\nTo use the CAS Gateway feature, first enable it in settings. Trying to use it without explicitly\nenabling this setting will raise an ImproperlyConfigured:\n\n    CAS_GATEWAY = True\n\nThen, add the `gateway` decorator to a view:\n\n    from django_cas.decorators import gateway\n\n    @gateway()\n    def foo(request):\n        #stuff\n        return render(request, 'foo/bar.html')\n\n## Custom Forbidden Page\n\nTo show a custom forbidden page, set `CAS_CUSTOM_FORBIDDEN` to a `path.to.some_view`. Otherwise,\na generic `HttpResponseForbidden` will be returned.\n\n## Require SSL Login\n\nTo force the service url to always target HTTPS, set `CAS_FORCE_SSL_SERVICE_URL` to `True`.\n\n## Proxy Tickets\n\nThis fork also includes Edmund Crewe's proxy ticket patch:\nhttp://code.google.com/r/edmundcrewe-proxypatch/source/browse/django-cas-proxy.patch\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Django Cas SSO Client (inherited from django-cas)",
    "version": "1.2.8",
    "project_urls": {
        "Download": "http://pypi.python.org/pypi/django-cas-sso",
        "Homepage": "http://github.com/unistra/django-cas/"
    },
    "split_keywords": [
        "django",
        "cas",
        "sso"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "555f6afd1d0933005e49fd0ce0484a1638652934000559aa2f0d48581ad3faf4",
                "md5": "bc87c2539c7999dac0575d21d11a72fc",
                "sha256": "237af44b7493e9c5199b6a0ef946ea93606afc94db265b0caeb7ecc7d6d37c80"
            },
            "downloads": -1,
            "filename": "django-cas-sso-1.2.8.tar.gz",
            "has_sig": false,
            "md5_digest": "bc87c2539c7999dac0575d21d11a72fc",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 16164,
            "upload_time": "2023-06-29T07:45:03",
            "upload_time_iso_8601": "2023-06-29T07:45:03.989139Z",
            "url": "https://files.pythonhosted.org/packages/55/5f/6afd1d0933005e49fd0ce0484a1638652934000559aa2f0d48581ad3faf4/django-cas-sso-1.2.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-06-29 07:45:03",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "unistra",
    "github_project": "django-cas",
    "travis_ci": true,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "tox": true,
    "lcname": "django-cas-sso"
}
        
Elapsed time: 0.08239s