{"id":13609027,"url":"https://github.com/jupyterhub/oauthenticator","last_synced_at":"2025-05-13T17:13:18.133Z","repository":{"id":21090318,"uuid":"24390283","full_name":"jupyterhub/oauthenticator","owner":"jupyterhub","description":"OAuth + JupyterHub Authenticator = OAuthenticator","archived":false,"fork":false,"pushed_at":"2025-04-08T05:47:35.000Z","size":1739,"stargazers_count":428,"open_issues_count":53,"forks_count":368,"subscribers_count":19,"default_branch":"main","last_synced_at":"2025-04-25T14:50:32.516Z","etag":null,"topics":["authenticator","github-oauth","globus","jupyter","jupyterhub","oauth-client"],"latest_commit_sha":null,"homepage":"https://oauthenticator.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jupyterhub.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-09-23T21:37:06.000Z","updated_at":"2025-04-15T09:30:34.000Z","dependencies_parsed_at":"2023-12-11T09:27:27.748Z","dependency_job_id":"48d57fcb-873a-4a8e-a390-d2ca1febd2fa","html_url":"https://github.com/jupyterhub/oauthenticator","commit_stats":{"total_commits":1280,"total_committers":126,"mean_commits":"10.158730158730158","dds":0.8046875,"last_synced_commit":"28c0fec80504d8b17550700cf8c6cfa1e816ad1e"},"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jupyterhub%2Foauthenticator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jupyterhub%2Foauthenticator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jupyterhub%2Foauthenticator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jupyterhub%2Foauthenticator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jupyterhub","download_url":"https://codeload.github.com/jupyterhub/oauthenticator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253990492,"owners_count":21995776,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authenticator","github-oauth","globus","jupyter","jupyterhub","oauth-client"],"created_at":"2024-08-01T19:01:31.876Z","updated_at":"2025-05-13T17:13:13.119Z","avatar_url":"https://github.com/jupyterhub.png","language":"Python","funding_links":[],"categories":["Python","JupyterHub认证","JupyterHub Authenticators"],"sub_categories":[],"readme":"# OAuth + JupyterHub Authenticator = OAuthenticator :heart:\n\n[![Documentation build status](https://img.shields.io/readthedocs/oauthenticator?logo=read-the-docs)](https://oauthenticator.readthedocs.org/en/latest)\n[![GitHub Workflow Status - Test](https://img.shields.io/github/actions/workflow/status/jupyterhub/oauthenticator/test.yml?logo=github\u0026label=tests)](https://github.com/jupyterhub/oauthenticator/actions)\n[![Latest PyPI version](https://img.shields.io/pypi/v/oauthenticator?logo=pypi)](https://pypi.python.org/pypi/oauthenticator)\n[![Latest conda-forge version](https://img.shields.io/conda/vn/conda-forge/oauthenticator?logo=conda-forge)](https://anaconda.org/conda-forge/oauthenticator)\n[![GitHub](https://img.shields.io/badge/issue_tracking-github-blue?logo=github)](https://github.com/jupyterhub/oauthenticator/issues)\n[![Discourse](https://img.shields.io/badge/help_forum-discourse-blue?logo=discourse)](https://discourse.jupyter.org/c/jupyterhub)\n[![Gitter](https://img.shields.io/badge/social_chat-gitter-blue?logo=gitter)](https://gitter.im/jupyterhub/jupyterhub)\n\n[OAuth](https://en.wikipedia.org/wiki/OAuth) is a token based login mechanism that doesn't rely on a username and password mapping.\nIn order to use this login mechanism with JupyerHub the login handlers need to be overridden.\nOAuthenticator overrides these handlers for the common OAuth2 identity providers allowing them to be\nplugged in and used with JupyterHub.\n\nThe following authentication services are supported through their own authenticator: [Auth0](oauthenticator/auth0.py),\n[Azure AD](oauthenticator/azuread.py), [Bitbucket](oauthenticator/bitbucket.py), [CILogon](oauthenticator/cilogon.py), [FeiShu](https://github.com/tezignlab/jupyterhub_feishu_authenticator),\n[GitHub](oauthenticator/github.py), [GitLab](oauthenticator/gitlab.py), [Globus](oauthenticator/globus.py),\n[Google](oauthenticator/google.py), [MediaWiki](oauthenticator/mediawiki.py),\n[OpenShift](oauthenticator/openshift.py).\n\nThere is also a [GenericAuthenticator](oauthenticator/generic.py)\nthat can be configured with any OAuth 2.0 identity provider or can be used\nto create a new authenticator class when additional customization is needed.\n\n## Installation\n\nThe installation guide can be found in the [docs](https://oauthenticator.readthedocs.io/en/latest/tutorials/install.html).\n\nThe [docs](https://oauthenticator.readthedocs.io/en/latest/tutorials/provider-specific-setup/index.html) also provide example setups for different OAuth2 identity providers.\n\n## Running tests\n\nTo run the tests locally, first setup a development environment as described in\n[CONTRIBUTING.md], and then do:\n\n```\npytest -v ./oauthenticator/tests/\n```\n\nOr you run a specific test file with:\n\n```\npytest -v ./oauthenticator/tests/\u003ctest-file-name\u003e\n```\n\n[contributing.md]: https://github.com/jupyterhub/oauthenticator/blob/main/CONTRIBUTING.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjupyterhub%2Foauthenticator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjupyterhub%2Foauthenticator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjupyterhub%2Foauthenticator/lists"}