Skip to content

Auth0 authentication backend for awesome Django apps

License

Notifications You must be signed in to change notification settings

cgwhitehead/django-auth0

 
 

Repository files navigation

django-auth0

Code Health https://travis-ci.org/imanhodjaev/django-auth0.png?branch=master

Django Auth0 authentication backend Backend implemented against Auth0 Regular Python application

Quickstart

  • Install django-auth0 $ pip install django-auth0
  • Add django_auth0 to INSTALLED_APPS
  • Add django_auth0.auth_backend.Auth0Backend to AUTHENTICATION_BACKENDS
  • Add django_auth0.context_processors.auth0 to CONTEXT_PROCESSORS so necessary template context will be provided
  • Include callback urls

Update AUTH0_CALLBACK_URL in settings.py to the following if want to use default authentication handler

  • Add Auth0 client side JavaScript and initialize it

Options:

  1. AUTH0_CLIENT_ID - Auth0 client app id,
  2. AUTH0_SECRET - Auth0 app secret,
  3. AUTH0_DOMAIN - Auth0 subdomain YOU_APP.auth0.com.
  4. AUTH0_CALLBACK_URL - Auth0 callback url is full url to your callback view like https://YOUR_DOMAIN/CALLBACK
  5. AUTH0_SUCCESS_URL - Url to redirect once you login successfully

Overriding callback view Default callback view looks like this so you can always write your own and set AUTH0_CALLBACK_URL to your custom view it should be url name.

Sample application is at https://github.com/imanhodjaev/auth0-sample

USING DJANGO @login_required decorators

The @login_required decorator uses the next parameter so that you can have a dynamic login URL. If you modify the lock javascript so that the callback url includes the next parameter, you can take advantage of this Django feature using this library. If no next parameter is included, the callback will redirect to your success url.

Sample modal lock javascript:

var authredirect = '{{ AUTH0_CALLBACK_URL}}' + location.search; var lock = new Auth0Lock('{{ AUTH0_CLIENT_ID }}', '{{ AUTH0_DOMAIN }}', {

auth: {

redirectUrl: authredirect, responseType: 'code', params: {

scope: 'openid profile'

}

}, rememberLastLogin: true, theme: {

primaryColor: '#3884FF',

} }); lock.show();

TODO

  • Improve tests,
  • Add Auth0 user profile model,
  • Add support for settings from Auth0,
  • Move string literals to configuration file

Running Tests

Does the code actually work?

source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install -r requirements-test.txt
(myenv) $ python runtests.py

Credits

Tools used in rendering this package:

About

Auth0 authentication backend for awesome Django apps

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 92.9%
  • Makefile 7.1%