Skip to main content

Django Client for justpass.me

  1. Install the justpassme app

    • For django 2.2, use justpass-me-django<3.0.0
    • For django 3.1+, use justpass-me-django>3.0.0
    pip install justpass-me-django
    
  2. Add the following to your INSTALLED_APPS

    INSTALLED_APPS = [ 
    '....'
    'mozilla_django_oidc',
    'justpassme',
    '....'
    ]
    
  3. Add the following to settings.py

    AUTHENTICATION_BACKENDS = (
     'justpassme.OIDC_CLIENT.OIDCUserFinder',
     'django.contrib.auth.backends.ModelBackend',
     )
    
    
    SITE_URL = YOUR_SITE_URL   #Your full site url
    OIDC_USERNAME_FIELD = "username"   # The field to use to create users on justpass.me
    LOGIN_URL = "/accounts/login/"     # Your login view as usual
    
    OIDC_RP_CLIENT_ID = "app.client_id"      # client_id from justpass.me
    OIDC_RP_CLIENT_SECRET="app.client_secret" # client_secret from justpass.me
    OIDC_OP_URL= "https://organization_domain.accounts.justpass.me/openid/" #Put your organization domain on justpass.me
    
    OIDC_RP_SCOPES= "openid"
    OIDC_RP_SIGN_ALGO = 'HS256'
    OIDC_STORE_ID_TOKEN = True
    OIDC_OP_JWKS_ENDPOINT=OIDC_OP_URL  +"jwks"
    OIDC_OP_AUTHORIZATION_ENDPOINT=OIDC_OP_URL + "authorize/"
    OIDC_OP_TOKEN_ENDPOINT = OIDC_OP_URL +"token/"
    OIDC_OP_USER_ENDPOINT = OIDC_OP_URL + "userinfo/"
    OIDC_CALLBACK_CLASS= "justpassme.OIDC_CLIENT.Callback"
    OIDC_AUTHENTICATE_CLASS = "justpassme.OIDC_CLIENT.Authenticate"
    LOGIN_REDIRECT_URL_FAILURE="/justpass/failure/"
    LOGIN_REDIRECT_URL = "/justpass/success/"
    
    # If your application uses SSL.
    USE_X_FORWARDED_HOST = True
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    
    
    # Provide the following functions that will be called when event is triggered, check example functions below
    REGISTRATION_SUCCESS = "Your_App.justpass.reg_success"
    REGISTRATION_FAILURE = "Your_App.justpass.reg_failure"
    AUTHENTICATION_SUCCESS = "Your_App.justpass.auth_success"
    AUTHENTICATION_FAILURE = "Your_App.justpass.auth_failure"
    
  4. Add justpass to your urls

    urls_patterns= [
    '...',
    path(r'justpass/', include('justpassme.urls')),
    path('oidc/',include('mozilla_django_oidc.urls')),
    '....',
     ]
    
  5. To start registration, redirct to justpass:start_reg

  6. To start login, redirect to justpass:start_login

    Note: For 2nd factor, The function expects the user's username to be in request.session["base_username"]

  7. Write 4 functions that handle the success and failure of registration and login, refer to them in the settings.py

    You can use the four functions below as a reference.

    def auth_success(request):
       return redirect('home')
          
    def auth_failure(request):
      return render(request, 'login.html', {"failed": True})
          
    def reg_success(request):
       request.user.mfa_enabled = True
       request.user.save()
       request.session["reg"] = True
       return redirect('home')
       
    def reg_failure(request):
       request.session["reg"] = False
       return redirect('home')
    

Note: If you use justpass.me as 2nd factor

Break your login function, Usually your login function will check for username and password, log the user in if the username and password are correct and create the user session, to support justpass.me, this has to change

  • authenticate the user
  • if username and password are correct , check if the user has mfa or not
    • if user has mfa then redirect to justpass.me
    • if user doesn't have mfa then call your function to create the user session

Metadata

Release files for justpass-me-django 3.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for justpass-me-django 3.2.1
File Size Uploaded
justpass-me-django-3.2.1.tar.gz 7.3 kB Details

Release files / justpass-me-django-3.2.1.tar.gz

Download URL justpass-me-django-3.2.1.tar.gz
Size 7.3 kB
Tags Source
SHA-256 checksum
How to use checksums
6ab901fdea64642670ec211586cb02febc901665feec010e2f3994b609389b70
BLAKE2b-256 checksum
How to use checksums
738f8d5528b1f44eac5898f17b1f8e86c8e6d041cc4c23673eaf67cfa826e06b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 colorama/0.4.5 importlib-metadata/4.6.4 keyring/23.5.0 pkginfo/1.8.2 readme-renderer/34.0 requests-toolbelt/0.9.1 requests/2.28.1 rfc3986/1.5.0 tqdm/4.57.0 urllib3/1.25.10 CPython/3.10.12

Release history Release notifications | RSS feed

3.2.2

1 release file

This release

3.2.1 This release

1 release file

3.2.0

1 release file

3.1.0

1 release file

3.0.4

1 release file

3.0.3

1 release file

3.0.2

1 release file

3.0.1

1 release file

3.0.0

1 release file

2.2.0

1 release file

2.1.0

1 release file

2.0.4

1 release file

2.0.3

1 release file

2.0.1

1 release file

2.0.0

1 release file

0.1.0

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page