Django Auth0 authentication background
Project description
Django Auth0 authentication backend
Quickstart
Install $ pip install django-auth0
Add django_auth0 to INSTALLED_APPS
Add django_auth0.auth_backend.Auth0Backend to AUTHENTICATION_BACKENDS
AUTHENTICATION_BACKENDS = [
"django_auth0.auth_backend.Auth0Backend",
"django.contrib.auth.backends.ModelBackend"
]
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:
AUTH0_CLIENT_ID - Auth0 client app id,
AUTH0_SECRET - Auth0 app secret,
AUTH0_DOMAIN - Auth0 subdomain YOU_APP.auth0.com.
AUTH0_CALLBACK_URL - Auth0 callback url is full url to your callback view like https://YOUR_DOMAIN/CALLBACK
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.
def process_login(request):
"""
Default handler to login user
:param request: HttpRequest
"""
code = request.GET.get('code', '')
json_header = {'content-type': 'application/json'}
token_url = 'https://%s/oauth/token' % settings.AUTH0_DOMAIN
token_payload = {
'client_id': settings.AUTH0_CLIENT_ID,
'client_secret': settings.AUTH0_SECRET,
'redirect_uri': reverse(settings.AUTH0_CALLBACK_URL),
'code': code,
'grant_type': 'authorization_code'
}
token_info = requests.post(token_url,
data=json.dumps(token_payload),
headers=json_header).json()
url = 'https://%s/userinfo?access_token=%s'
user_url = url % (settings.AUTH0_DOMAIN, token_info['access_token'])
user_info = requests.get(user_url).json()
# We're saving all user information into the session
request.session['profile'] = user_info
user = authenticate(**user_info)
if user:
login(request, user)
return redirect(settings.AUTH0_SUCCESS_URL)
return HttpResponse(status=400)
Sample application at https://github.com/imanhodjaev/auth0-sample
TODO
Improve tests
Add Auth0 user profile model
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:
History
0.0.2 (2016-02-01)
Update documentation
0.0.1 (2016-02-01)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_auth0-0.0.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50d294ad1be3b2f7b4c22a11d28bb942697acf61e3f21f4a7c48c1f1a856511e |
|
MD5 | a3711a0acd69fbe16f6d11ff24d52776 |
|
BLAKE2b-256 | 2dbdd9b49354f38712bba12a2f5b687741f3204c17745da5410d527ff4820426 |