Metadata-Version: 2.1
Name: jupyterhub-multiauthenticator
Version: 0.4.0
Summary: Authenticator multiplexer for JupyterHub
Author-email: Samuel Gaist <samuel.gaist@idiap.ch>
License: BSD-3-Clause
Keywords: JupyterHub,Authenticator
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Description-Content-Type: text/markdown
Requires-Dist: jupyterhub
Requires-Dist: importlib_metadata>=4.6; python_version < "3.10"
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: pytest-asyncio; extra == "test"
Requires-Dist: oauthenticator; extra == "test"
Provides-Extra: dev
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: jupyterhub-multiauthenticator[test]; extra == "dev"

<!--
Copyright © Idiap Research Institute <contact@idiap.ch>

SPDX-License-Identifier: BSD-3-Clause
-->

# JupyterHub OAuthenticator + LDAPAuthenticator ++... = MultiAuthenticator ❤️

The MultiAuthenticator is multiplexer authenticator class that allows to use
more than one authentication option with JupyterHub.

## Installation

```
$ pip install git+https://github.com/idiap/multiauthenticator
$ pip install jupyter-multiauthenticator
```

## Configuration

The MultiAuthenticator class only has one configuration point: authenticators.

This property shall contain a list of tuple with the following content:

- Authenticator class (i.e. GitLabAuthenticator, LDAPAuthenticator)
- The URL scope (i.e. /gitlab, /ldap)
- A dictionary with the authenticator's configuration

As an example:

```python
from jupyterhub.auth import PAMAuthenticator

class MyPamAutenticator(PAMAuthenticator):
    login_service = "PAM"

c.MultiAuthenticator.authenticators = [
    {
        "authenticator_class": 'github',
        "url_prefix": '/github',
        "config": {
            'client_id': 'XXXX',
            'client_secret': 'YYYY',
            'oauth_callback_url': 'https://jupyterhub.example.com/hub/github/oauth_callback'
        }
    },
    {
        "authenticator_class": 'google',
        "url_prefix": '/google',
        "config": {
            'client_id': 'xxxx',
            'client_secret': 'yyyy',
            'oauth_callback_url': 'https://jupyterhub.example.com/hub/google/oauth_callback'
        }
    },
    {
        "authenticator_class": 'gitlab',
        "url_prefix": '/gitlab',
        "config": {
            'client_id': 'ZZZZ',
            'client_secret': 'AAAA',
            'oauth_callback_url': 'https://jupyterhub.example.com/hub/gitlab/oauth_callback'
            "gitlab_url": "https://gitlab.example.com"
        }
    },
    {
        "authenticator_class": MyPamAuthenticator,
        "url_prefix": "/pam",
    },
]

c.JupyterHub.authenticator_class = 'multiauthenticator'
```
