Skip to main content

No project description provided

Project description

Jupyterhub SAML Auth

image

Authenticate your Jupyterhub users using SAML. This authenticator uses OneLogin's python3-saml package as a backend API for handling SAML authentication.

Installation

pip install jupyterhub-saml-auth

Configuration

See the jupyterhub_config.py example configuration below for how to integrate this package with jupyterhub

def extract_username(acs_handler, attributes):
    email = attributes['email'][0]
    username = email.split('@')[0]
    return username

# The configuration path is for OneLogin's python3-saml package. This directory is where
# settings.json & advanced_settings.json go. See https://github.com/onelogin/python3-saml
# for more info about this
c.SAMLAuthenticator.saml_settings_path = '/app/etc'

# The cookies that your IdP uses for maintaining a login session. These will be cleared
# once the user hits 'logout'
c.SAMLAuthenticator.session_cookie_names = {'PHPSESSIDIDP', 'SimpleSAMLAuthTokenIdp'}

# Function that extracts the username from the SAML attributes.
c.SAMLAuthenticator.extract_username = extract_username

# register the SAML authenticator with jupyterhub
c.JupyterHub.authenticator_class = 'jupyterhub_saml_auth.SAMLAuthenticator'

Environment variables

  • SAML_HTTPS_OVERRIDE: setting this will override the automatic detection of http or https to /hub/acs route and will set it to only https.

Development

Prerequisite software

  • docker
  • docker compose
  • python3
  • Firefox or Chrome

Create a development environment

# at project root
python3 -m venv .
source bin/activate
pip install -r requirements.txt

# OPTIONAL, install package if developing source code
pip install -e .
pytest test/unit # run the unit tests

Test the authentication process

The acceptance test starts the application as a Docker container. Start the containers with docker compose up -d prior to running the acceptance test with the command pytest test/test_acceptance.py. See conftest.py for a list of command line switches/flags to run the acceptance tests.

Kill your docker environment

To kill the docker containers, run the command docker compose down at the project root.

References

https://github.com/onelogin/python3-saml

https://goteleport.com/blog/how-saml-authentication-works/

https://medium.com/@BoweiHan/elijd-single-sign-on-saml-and-single-logout-624efd5a224

https://medium.com/disney-streaming/setup-a-single-sign-on-saml-test-environment-with-docker-and-nodejs-c53fc1a984c9

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jupyterhub_saml_auth-0.3.2.tar.gz (19.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jupyterhub_saml_auth-0.3.2-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file jupyterhub_saml_auth-0.3.2.tar.gz.

File metadata

  • Download URL: jupyterhub_saml_auth-0.3.2.tar.gz
  • Upload date:
  • Size: 19.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for jupyterhub_saml_auth-0.3.2.tar.gz
Algorithm Hash digest
SHA256 2a84749b8a65428933d71b9869898db862dfe89f1e483e8161a1f41437e8dbbe
MD5 15103043d8840bc6e13146d6ba1f4d50
BLAKE2b-256 ae984a76a8c14aae205cf8e42b857a91919145fad889af1e14a6b5ba037848fa

See more details on using hashes here.

File details

Details for the file jupyterhub_saml_auth-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: jupyterhub_saml_auth-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 21.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for jupyterhub_saml_auth-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c9eac607ab0fa2dde07a2f1d7052bf9d70cf50db221a3107f204c2aeb619bd79
MD5 07a4fae689fe03498881f297eceba332
BLAKE2b-256 8e4484fa70e88af3f3f588812bf90125d427cf7e43b1f71da9220887f65dbd57

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page