Giter VIP home page Giter VIP logo

django-cas-provider's Introduction

django-cas-provider

OVERVIEW

django-cas-provider is a provider for the Central Authentication Service. It supports CAS version 1.0 and parts of CAS version 2.0 protocol. It allows remote services to authenticate users for the purposes of Single Sign-On (SSO). For example, a user logs into a CAS server (provided by django-cas-provider) and can then access other services (such as email, calendar, etc) without re-entering her password for each service. For more details, see the CAS wiki and Single Sign-On on Wikipedia.

INSTALLATION

To install, run the following command from this directory:

python setup.py install

Or, put cas_provider somewhere on your Python path.

If you want use CAS v.2 protocol or above, you must install lxml package to correct work.

USAGE

  1. Add 'cas_provider' to your INSTALLED_APPS tuple in settings.py.
  2. In settings.py, set LOGIN_URL to '/cas/login/' and LOGOUT_URL to '/cas/logout/'
  3. In urls.py, put the following line: (r'^cas/', include('cas_provider.urls')),
  4. Create login/logout templates (or modify the samples)
  5. Use 'cleanuptickets' management command to clean up expired tickets

SETTINGS

CAS_TICKET_EXPIRATION - minutes to tickets expiration. Default is 5 minutes.

CAS_CUSTOM_ATTRIBUTES_CALLBACK - name of callback to provide dictionary with extended user attributes (may be used in CAS v.2 or above). Default is None.

CAS_CUSTOM_ATTRIBUTES_FORMAT - name of custom attribute formatter callback will be used to format custom user attributes. This package provide module attribute_formatters with formatters for common used formats. Available formats styles are RubyCAS, Jasig and `Name-Value. Default is Jasig style. See module source code for more details.

CAS_AUTO_REDIRECT_AFTER_LOGOUT - If False (default behavior, specified in CAS protocol) after successful logout notification page will be shown. If it's True, after successful logout will be auto redirect back to service without any notification.

PROTOCOL DOCUMENTATION =====================

PROVIDED VIEWS =============

login

It has not required arguments.

Optional arguments:

  • template_name - login form template name (default is 'cas/login.html')
  • success_redirect - redirect after successful login if service GET argument is not provided

    (default is settings.LOGIN_REDIRECT_URL)

  • warn_template_name - warning page template name to allow login user to service if he already authenticated in SSO (default is 'cas/warn.html')

If request.GET has 'warn' argument and user has already authenticated in SSO it shows warning message instead of generate Service Ticket and redirect.

logout

This destroys a client's single sign-on CAS session. The ticket-granting cookie is destroyed, and subsequent requests to login view will not obtain service tickets until the user again presents primary credentials (and thereby establishes a new single sign-on session).

It has not required arguments.

Optional arguments:

  • template_name - template name for page with successful logout message (default is 'cas/logout.html')

validate

It checks the validity of a service ticket. It is part of the CAS 1.0 protocol and thus does not handle proxy authentication.

It has not arguments.

service_validate

It checks the validity of a service ticket and returns an XML-fragment response via CAS 2.0 protocol. Work with proxy is not supported yet.

It has not arguments.

CUSTOM USER ATTRIBUTES FORMAT ===========================

Custom attribute format style may be changed in project settings with CAS_CUSTOM_ATTRIBUTES_FORMAT constant. You can provide your own formatter callback or specify existing in this package in attribute_formatters module.

Attribute formatter callback takes two arguments:

  • auth_success - cas:authenticationSuccess node. It is `lxml.etree.SubElement`instance;
  • attrs - dictionary with user attributes received from callback specified in

    CAS_CUSTOM_ATTRIBUTES_CALLBACK in project settings.

Example of generated XML below:

<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
    <cas:authenticationSuccess>
        <cas:user>jsmith</cas:user>

        <!-- extended user attributes wiil be here -->

        <cas:proxyGrantingTicket>PGTIOU-84678-8a9d2sfa23casd</cas:proxyGrantingTicket>
    </cas:authenticationSuccess>
</cas:serviceResponse>
  • Name-Value style (provided in cas_provider.attribute_formatters.name_value):

    <cas:attribute name='attraStyle' value='Name-Value' />
    <cas:attribute name='surname' value='Smith' />
    <cas:attribute name='givenName' value='John' />
    <cas:attribute name='memberOf' value='CN=Staff,OU=Groups,DC=example,DC=edu' />
    <cas:attribute name='memberOf' value='CN=Spanish Department,OU=Departments,OU=Groups,DC=example,DC=edu' />
  • Jasig Style attributes (provided in cas_provider.attribute_formatters.jasig):

    <cas:attributes>
        <cas:attraStyle>Jasig</cas:attraStyle>
        <cas:surname>Smith</cas:surname>
        <cas:givenName>John</cas:givenName>
        <cas:memberOf>CN=Staff,OU=Groups,DC=example,DC=edu</cas:memberOf>
        <cas:memberOf>CN=Spanish Department,OU=Departments,OU=Groups,DC=example,DC=edu</cas:memberOf>
    </cas:attributes>
  • RubyCAS style (provided in cas_provider.attribute_formatters.ruby_cas):

    <cas:attraStyle>RubyCAS</cas:attraStyle>
    <cas:surname>Smith</cas:surname>
    <cas:givenName>John</cas:givenName>
    <cas:memberOf>CN=Staff,OU=Groups,DC=example,DC=edu</cas:memberOf>
    <cas:memberOf>CN=Spanish Department,OU=Departments,OU=Groups,DC=example,DC=edu</cas:memberOf>

django-cas-provider's People

Contributors

alekam avatar gthb avatar mstepniowski avatar vshulyak avatar

Watchers

 avatar  avatar  avatar

Forkers

castlabs

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.