170 Commits

Author SHA1 Message Date
Chilin Chiou
2c01935339 Fix error user name in fastapi service example 2025-05-02 01:21:41 +08:00
Min RK
798faaafe8 example: fix expiration
Co-authored-by: Simon Li <orpheus+devel@gmail.com>
2025-04-26 13:24:50 +02:00
Min RK
f45f7536e9 Apply suggestions from code review
Co-authored-by: Simon Li <orpheus+devel@gmail.com>
2025-04-25 12:57:33 +02:00
Min RK
36fd86798e add forced login example 2025-04-24 14:53:40 +02:00
Min RK
5636472ebf apply ruff fixes for UP031 2024-05-07 11:33:59 +02:00
Min RK
5ae250506b service-whoami: don't advertise link that won't work
whoami-api is api-only, it shouldn't be in the services dropdown
2024-04-23 10:09:05 +02:00
Min RK
75c947be59 address djlint lint
and autoformat js in templates
2024-04-19 10:46:50 +02:00
Min RK
d9ce1b917f add and run djlint formatter 2024-04-19 10:12:57 +02:00
Min RK
52af3abedc run ruff via pre-commit 2024-03-11 09:39:10 +01:00
Min RK
e15b7c2620 apply pyupgrade fixes via ruff
ruff check --fix --select UP
2024-03-11 09:16:02 +01:00
Min RK
5e166970fa easier linting in jupyterhub_config
noqa get_import satisfies most linters
2024-03-11 09:16:02 +01:00
Min RK
2c93299764 Merge pull request #4699 from minrk/clarify-user-security
clarify some points where users can disable security for their own servers
2024-02-07 08:35:38 +01:00
Min RK
41fff711e7 user-initiated sharing (#4594)
Squashed merge of https://github.com/jupyterhub/jupyterhub/pull/4594

Co-authored-by: Samuel Gaist <samuel.gaist@idiap.ch>
2024-02-07 08:34:39 +01:00
Min RK
a20b29fb1c clarify some points where users can disable security for their own servers 2024-02-06 13:28:59 +01:00
pre-commit-ci[bot]
ef568e3d61 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2024-02-05 20:27:29 +00:00
Robert Schroll
551c65243c Black and Prettier formatting 2024-01-19 18:11:34 -08:00
Robert Schroll
1d9182dd82 Black formatting 2024-01-19 17:26:36 -08:00
Robert Schroll
e879ab18e2 examples/service-whoami-flask: Fix return types in oauth_callback
In my testing, Flask 3.0.0 doesn't accept returning only an integer
(as an error code) in a handler.  A (content, status) tuple does
work.  I don't know if this is a recent change, or if this has always
been broken, but the tuple return should be good for older Flask
versions as well.
2024-01-18 15:18:26 -08:00
Robert Schroll
8a5fc8044a examples/service-whoami-flask: Add scope to user role
For ordinary users to access the service, they need an appropriate
scope added to the user role.  This adds that role in the
jupyterhub_config.py, as well as a note about this in the README.
It also updates the ouptut that comes form the whoami service.
2024-01-18 15:15:44 -08:00
YuviPanda
f366b785a3 Move from dockerhub to quay.io
See https://github.com/jupyterhub/team-compass/issues/688
for context.

I've also added `QUAY_USERNAME` and `QUAY_PASSWORD` to environment
secrets, but *not* `env.REGISTRY`. I will do so once this gets
merged.
2023-10-22 10:27:42 +05:30
pre-commit-ci[bot]
42488fdb12 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2023-09-06 16:45:17 +00:00
YuviPanda
3865df7db0 Move boilerplate to the bottom 2023-09-06 09:41:24 -07:00
YuviPanda
53c5a5001b Fix external-oauth example jupyterhub_config.py
- Roles need to be explicitly granted, otherwise you get a
  403. This example predates roles.
- Explicitly set bind_url - without this, JupyterHub itself doesn't
  seem to bind anywhere, and so you just get a 404 when you visit
  whatever port configurable-http-proxy lands on. This is probably
  a separate bug to be investigated, but in the meantime copying
  this from testing/jupyterhub_config.py makes this example actually
  work
- Set DummyAuthenticator as the default, so users can get started
  with this example
2023-09-05 16:27:00 -07:00
YuviPanda
6ea33fa7cc Document oauth_client_id must start with service-
Enforced here: 7f50a0a7fa/jupyterhub/services/service.py (L327)
2023-09-05 15:21:50 -07:00
Min RK
6494017ce2 Fix link to collaboration accounts doc in example 2023-05-11 15:08:14 +02:00
Min RK
08f9396017 add rtc screenshots 2023-02-28 11:47:50 +01:00
Min RK
c6598c797b Add collaboration-users example and tutorial 2023-02-28 11:35:03 +01:00
Min RK
3ad81f3bce sync with main 2023-02-08 16:39:59 +01:00
pre-commit-ci[bot]
be07c7ef31 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2023-02-07 04:40:23 +00:00
Min RK
58dccdb59b jupyterhub-singleuser as a Jupyter Server 2.0 extension
mostly a copy (fork) of singleuser app
using public APIs instead of lots of patching.

opt-in via `JUPYTERHUB_SINGLEUSER_EXTENSION=1`

related changes:

- stop running a test single-user server in a thread. It's complicated and fragile.
  Instead, run it normally, and get the info we need from a custom handler registered via an extension
  via the `full_spawn` fixture
2023-02-02 16:14:06 +01:00
Min RK
2dab6aed99 Remove remnants of unused jupyterhub-services cookie
We stopped being able to use it in 2.0, but we didn't stop setting it.
2022-12-09 09:22:17 +01:00
Erik Sundell
12594631e0 maint: use __all__ statements where its reasonable to do
Co-authored-by: Simon Li <orpheus+devel@gmail.com>
2022-11-18 16:42:43 +01:00
Erik Sundell
7a9491c323 flake8: check F408 about unused imports, manual fixes only 2022-11-16 15:51:26 +01:00
Erik Sundell
957fd9cc20 flake8: check F811 about redefinition of unused name 2022-11-16 15:51:26 +01:00
Lili Yao
76f7ff4721 Update README.md
Corrected some spelling errors.
2022-10-26 15:44:52 +11:00
pre-commit-ci[bot]
ef7545fc75 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2022-10-12 11:34:19 +00:00
Temidayo
08a125489d fixed a typo 2022-10-12 12:29:07 +01:00
Temidayo
1050dadda4 modified announcement README and config.py 2022-10-12 12:27:57 +01:00
Min RK
dfc2d4d4f1 Merge remote-tracking branch 'origin/main' into oauth_config 2022-08-02 13:53:51 +02:00
Min RK
c289a422c3 validate proxy.extra_routes
- add trailing slash if missing, and warn
- raise if leading slash is wrong (must not be present with host routing, must be present otherwise)
2022-07-13 20:33:39 -07:00
Min RK
225ace636a call client-allowed scopes JUPYTERHUB_OAUTH_CLIENT_ALLOWED_SCOPES 2022-07-08 10:18:59 -07:00
Min RK
62b38934e5 store scopes on oauth clients, too
rather than roles, matching tokens

because oauth clients are mostly involved with issuing tokens,
they don't have roles themselves (their owners do).

This deprecates the `oauth_roles` config on Spawners and Services, in favor of `oauth_allowed_scopes`.

The ambiguously named `oauth_scopes` is renamed to `oauth_access_scopes`.
2022-06-08 12:26:48 +02:00
Min RK
7a9778249f run pre-commit with isort 2022-03-31 12:33:26 +02:00
Min RK
d2eaf90df2 authorize subsets of roles
- oauth clients can request a list of roles
- authorization will proceed with the _subset_ of those roles held by the user
- in the future, this subsetting will be refined to the scope level
2022-03-15 11:54:42 +01:00
Min RK
fdf23600c0 allow custom scopes
defined with

    c.JupyterHub.custom_scopes = {
        'custom:scope': {'description': "text shown on oauth confirm"}
    }

Allows injecting custom scopes to roles,
allowing extension of granular permissions to service-defined custom scopes.

Custom scopes:

- MUST start with `custom:`
- MUST only contain ascii lowercase, numbers, colon, hyphen, asterisk, underscore
- MUST define a `description`
- MAY also define `subscopes` list(s), each of which must also be explicitly defined

HubAuth can be used to retrieve and check for custom scopes to authorize requests.
2022-03-11 11:37:26 +01:00
Min RK
88be7a9967 test coverage for Authenticator.managed_groups
- tests
- docs
- ensure all group APIs are rejected when auth is in control
- use 'groups' field in return value of authenticate/refresh_user, instead of defining new method
- log group changes in sync_groups
2022-01-24 13:45:35 +01:00
Thomas Li Fredriksen
144abcb965 Added authenticator hook for synchronizing user groups
- Added hook function stub to authenticator base class
- Added new config option `manage_groups` to base `Authenticator` class
- Call authenticator hook from `refresh_auth`-function in `Base` handler class
- Added example
2022-01-20 13:30:03 +01:00
Min RK
a746e8e7fb update service-whoami example
- update models with 2.0.0
- different scopes for oauth, api
  shows model depends on permissions
- update text with more details about scopes
- fix outdated reference to local-system credentials
2021-12-22 10:10:16 +01:00
Min RK
9ade4bb9b2 server-api example: trim space in token file
avoids invalid newlines in the auth header
2021-09-27 12:42:23 +02:00
Min RK
5f19989467 suggest roles instead of admin_users
and make admin link permission check match admin page

it would be nice if this could be consolidated (maybe an `admin:ui` permission?)
2021-09-16 11:57:36 +02:00