django-rocketchat-auth
django-rocketchat-auth copied to clipboard
Rocket.Chat authentication using Django
django-rocketchat-auth
.. image:: https://img.shields.io/pypi/v/django-rocketchat-auth.svg :target: https://pypi.python.org/pypi/django-rocketchat-auth
Authenticate your Rocket.Chat
_ users with Django web framework.
This app implements the API used by Rocket.Chat IFrame authentication
_. Also, it handles logout by wiring up a method on Django signals.
It was tested with Django 2.0.4 and Rocket.Chat 0.62.2. If you have any problems, please open an issue.
Quickstart
-
Install this app in you project::
pip install django-rocketchat-auth
-
Add "rocketchat_auth" to your INSTALLED_APPS setting like this::
INSTALLED_APPS = ( ... 'rocketchat_auth', )
-
Get an Rocket.Chat authentication token
_, so we can use the API. -
Update your
settings.py
::MONGO_DB = 'localhost:27017'
or more verbose (e.g. for Heroku)
MONGO_DB = '
: @ : / ?authSource= ' ROCKETCHAT_URL = 'http://localhost:3000'
ROCKETCHAT_AUTH_TOKEN = '<YOUR AUTH TOKEN FROM STEP 3>' ROCKETCHAT_USER_ID = '<YOUR USER ID>'
CORS_ORIGIN_WHITELIST = ( 'localhost:8000', 'localhost:3000', )
-
Include the rocketchat_auth URLconf in your project urls.py like this::
urlpatterns += [url(r'^rocketchat/', include('rocketchat_auth.urls'))]
-
Since we will put your Django app into an iframe, we have to setup some security measures that would prevent it from happening:
- Install
django-cors-headers
_ and set your Rocket.Chat domain inCORS_ORIGIN_WHITELIST
- Configure Django's
XFrameOptionsMiddleware
to exempt your login page for Rocket.Chat requests or disable it (dangerous) - Configure Django's
CsrfViewMiddleware
to exempt your login page for Rocket.Chat requests or disable it (dangerous)
- Now go to your Rocket.Chat admin page > Accounts > Iframe:
- Enable Iframe
- Iframe URL: http://localhost:8000/admin/login/?next=/rocketchat/redirect
- URL API: http://localhost:8000/rocketchat/api
Roadmap
- Enforce unique email registration in Django admin, since Rocket.Chat requires this.
- Update Rocket.Chat user details in MongoDB when the user is modified in Django Admin.
.. _Rocket.Chat
: https://github.com/RocketChat/Rocket.Chat) users using [Django framework](https://github.com/django/django
.. _Rocket.Chat IFrame authentication
: https://rocket.chat/docs/administrator-guides/authentication/iframe/
.. _django-cors-headers
: https://github.com/ottoyiu/django-cors-headers
.. _Get an Rocket.Chat authentication token
: https://rocket.chat/docs/developer-guides/rest-api/authentication/login/