pmuller / django-crowd-auth

Atlassian Crowd SSO integration for Django applications
Other
10 stars 6 forks source link
atlassian atlassian-crowd crowd django sso

django-crowd-auth

This package includes a authentication backend and an authentication middleware to integrate Django's authentication system with Atlassian Crowd.

When authenticating an user against Crowd, its nested groups are retrieved and mirrored in Django.

Usage

Middlewares

Often the SSL session does not terminates directly on the Django application, but on an intermediate proxy.

This package also includes 3 middlewares that rewrites the user's REMOTE_ADDR using header set by these proxies:

.. warning::

Only use these middlewares when you KNOW what you're doing. Otherwise you could enable attackers to spoof their IP address.

.. note::

As the SSO middleware needs REMOTE_ADDR, these middlewares must be declared BEFORE the SSO middleware.

Settings

Example +++++++

.. code-block:: python

CROWD_CLIENT = {
    'crowd_url': 'https://crowd.foo.bar',
    'app_name': 'foo',
    'app_pass': 'bar',
    'ssl_verify': '/etc/pki/tls/certs/ca-bundle.crt',
    'timeout': 10,
}
CROWD_USERS_ARE_STAFF = True
CROWD_SUPERUSERS_GROUP = 'administrators'
AUTHENTICATION_BACKENDS = ['django_crowd_auth.backends.Backend']
MIDDLEWARE = [
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django_crowd_auth.middlewares.sso',
]

Synchronization

While users and groups are created on the fly (i.e. when they access the Django application), it is sometimes necessary to mirror Crowd users and groups in Django.

This package includes a sync_crowd management command for this purpose. To use it, simply add django_crowd_auth to the INSTALLED_APPS.