Commit Graph

213 Commits

Author SHA1 Message Date
Erik Sundell
5e57e0141a Backport PR #4677: Improve validation, docs for token.expires_in 2024-02-05 14:30:06 +00:00
Min RK
55213f6f53 run pre-commit
black adds some blank lines
2024-01-30 14:32:25 +01:00
Min RK
7d0bc1a112 avoid warning on engine_connect listener 2023-03-09 09:16:15 +01:00
Min RK
51b6376634 require sqlalchemy 1.4
removes some workarounds needed for sqlalchemy 1.1 + 2.0 support

1.4 backports most 2.0 behavior, keeping it off-by-default for an easier opt-in transition

opt-in with `session.future = True` flag
2023-01-27 14:15:02 +01:00
Min RK
2db7c47fbf sqlalchemy 2 compatibility
- avoid backref warnings by adding objects to session explicitly before creating any relationships
- remove unnecessary `[]` around scalar query
- use `text()` wrapper on connection.execute
- engine.execute is removed
- update import of declarative_base
- ensure RemovedIn20Warning is available for warnings filters on sqlalchemy < 1.4 (needs editable install to avoid pytest path mismatch)
- explicitly relay password in engine.url to alembic
2023-01-27 10:42:03 +01:00
Vlad Vifor
e84359cc23 Merge branch 'jupyterhub:main' into group_property_feature 2023-01-03 16:00:45 +01:00
pre-commit-ci[bot]
865d5f7646 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2022-11-16 14:53:12 +00:00
Vlad Vifor
9186594dc1 Merge branch 'jupyterhub:main' into group_property_feature 2022-08-03 12:24:35 +02:00
Min RK
8aac18c96d More documentation for 3.0 role/scope changes
a few more outdated `versionchanged` notes
2022-08-02 14:39:03 +02:00
Min RK
a35a2ec8b7 less space
Co-authored-by: Erik Sundell <erik.i.sundell@gmail.com>
2022-08-02 13:34:42 +02:00
vpopescu
1ccf282170 Merge commit '63b7defe1a40b3abc3582a65a0402c1e82a2e230' into group_property_feature 2022-06-14 14:57:06 +02: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
e229c63e11 use equality to filter token prefixes
otherwise, index isn't used

note: this means changing the token prefix size requires revoking all tokens,
where before only _increasing_ the token prefix size required doing that.
2022-05-25 15:54:34 +02:00
Vlad Vifor
35f4c76982 Merge branch 'main' into group_property_feature 2022-04-14 17:17:21 +02:00
Min RK
b6210dc225 add !service and !server scope filters
allows oauth clients to issue scopes that only grant access to the issuing service

e.g. access:service!service or access:servers!server

especially useful with custom scopes
2022-04-08 20:10:23 +02:00
Min RK
7a9778249f run pre-commit with isort 2022-03-31 12:33:26 +02:00
Vlad Vifor
6ede428990 Merge branch 'jupyterhub:main' into group_property_feature 2022-03-30 11:25:53 +02:00
Min RK
3076845927 tokens have scopes
instead of roles, which allow tokens to change permissions over time

This is mostly a low-level change,
with little outward-facing effects.

- on upgrade, evaluate all token role assignments to their current scopes,
  and store those scopes on the tokens
- assigning roles to tokens still works, but scopes are evaluated and validated immediately,
  rather than lazily stored as roles
- no longer need to check for role permission changes on startup, because token permissions aren't affected
- move a few scope utilities from roles to scopes
- oauth allows specifying scopes, not just roles.
  But these are still at the level specified in roles,
  not fully-resolved scopes.
- more granular APIs for working with scopes and roles
2022-03-18 14:13:16 +01:00
vladfreeze
5aed99b4a6 Improved design 2021-12-02 11:29:26 +01:00
vladfreeze
4c30e9e1d1 Updated code to fit with latest version 2021-12-02 11:29:24 +01:00
vladfreeze
471e492c11 Added changes for group properties editing 2021-12-02 11:29:00 +01:00
Erik Sundell
bc71ad6d73 Apply suggestions from code review
Co-authored-by: Carol Willing <carolcode@willingconsulting.com>
2021-08-26 16:23:38 +02:00
Erik Sundell
d6c48b15fe pyupgrade: run pyupgrade --py36-plus and black on all but tests 2021-08-26 16:23:38 +02:00
pre-commit-ci[bot]
18c5b6a17a [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2021-06-28 17:44:35 +00:00
0mar
2f8f7ad0b0 Resolves sql warnings on 3.6 and fixes for scope expansion bug 2021-06-17 14:38:14 +02:00
0mar
528ab28871 Raise error when hub has no roles defined 2021-06-16 11:37:23 +02:00
Min RK
69d2839ba3 test access scopes in authorize handler
- provider.add_client returns the client
- fix Spawner access scopes
- debug logging in mock spawners
- Assign service access scopes
2021-06-07 14:02:10 +02:00
Min RK
e5198b4039 create boolean columns with create_constraint=False
matches new default behavior in sqlalchemy 1.4
2021-06-07 13:58:27 +02:00
Min RK
57f4c08492 get upgrade working on sqlite with foreign key naming convention 2021-06-07 13:58:27 +02:00
Min RK
7e46d5d0fc store relationship between oauth client and service/spawner
so that we can look up the spawner/service from the oauth client and vice versa
2021-06-07 13:58:27 +02:00
Min RK
478ae8a744 typo in comment
Co-authored-by: Ivana <IvanaH8@users.noreply.github.com>
2021-05-21 15:36:14 +02:00
Min RK
02619b687f cleanup after failure to create token due to permisison errors
have to delete tokens explicitly if we fail to finish creating them
2021-05-20 13:48:37 +02:00
Min RK
4728325bf7 persist roles through oauth process
- Attach role limit to OAuthClient
- Attach authorized roles to OAuthCode
- pass roles from code to API token on completion

standard 'scopes' in oauth process are matched against our 'roles' instead of our low-level scopes
2021-04-20 14:29:29 +02:00
Min RK
ad9ebdd60f add missing session_id to newly merged API tokens
and remove grant_type which is not a property of the tokens themselves
2021-04-13 13:23:53 +02:00
Min RK
0b56fd9e62 remove separate oauth tokens
- merge oauth token fields into APITokens
- create oauth client 'jupyterhub' which owns current API tokens
- db upgrade is currently to drop both token tables, and force recreation on next start
2021-04-13 13:23:45 +02:00
Min RK
ebb13ed39f Merge master into rbac 2021-04-13 13:07:30 +02:00
0mar
95759b25f2 Fixed config role token assignment 2021-04-09 12:06:21 +02:00
0mar
b0b1350ec0 Merge branch 'rbac' into additional_scopes 2021-04-08 16:55:25 +02:00
0mar
1515747b1e Refactored role methods 2021-03-29 21:26:34 +02:00
Min RK
caae99aa09 avoid deprecated engine.table_names
deprecated in sqlalchemy 1.4

use recommended inspect(engine).get_table_names() instead
2021-03-26 12:54:40 +01:00
IvanaH8
bdc4bd4763 Resolve merge conflicts with Vertical Filtering and improve tests 2021-03-24 13:39:59 +01:00
0mar
7496fda089 Implemented default token roles, self scope for users and tokens for mockservices 2021-03-11 19:33:05 +01:00
IvanaH8
10c82d6272 resolved conflicts with rbac branch 2021-02-17 16:31:46 +01:00
Min RK
4dac580d3d Merge master into rbac 2021-01-27 12:39:02 +01:00
Omar Richardson
82c837eb89 Refactored orm.get_class, improved resource filtereing 2021-01-05 19:58:39 +01:00
Tim Gates
1e53fd1f8c docs: fix simple typo, funciton -> function
There is a small typo in jupyterhub/orm.py.

Should read `function` rather than `funciton`.
2020-12-23 11:54:51 +11:00
IvanaH8
5e8864f29d fixed default roles for mocked services 2020-12-18 15:04:14 +01:00
IvanaH8
c0cadc384d adding roles to tokens 2020-11-19 08:22:52 +01:00
IvanaH8
087c763d41 adding roles to services 2020-10-28 11:16:03 +01:00
IvanaH8
f1ed74bae1 creating roles module 2020-10-19 19:57:55 +02:00