OAuth is a token based login mechanism that doesn't rely on a username and password mapping. In order to use this login mechanism with JupyerHub the login handlers need to be overridden. OAuthenticator overrides these handlers for the common OAuth2 identity providers allowing them to be plugged in and used with JupyterHub.
There is also a GenericAuthenticator that can be configured with any OAuth 2.0 identity provider or can be used to create a new authenticator class when additional customization is needed.
The installation guide can be found in the docs.
The docs also provide example setups for different OAuth2 identity providers:
To run the tests locally:
$ pip install --upgrade --pre -r test-requirements.txt
$ pytest -v ./oauthenticator/tests/
Or you run a specific test file with:
$ pytest -v ./oauthenticator/tests/<test-file-name>