Skip to content

Commit 0ec74a3

Browse files
minrkZsailer
authored andcommitted
give authorizer handle on identity provider
In many cases of custom implementations, these two will have some coupling. So it makes sense for the Authorizer to have access to the identity provider for shared info. e.g. the HubAuth object, when working with JupyterHub.
1 parent f2a0344 commit 0ec74a3

File tree

3 files changed

+17
-11
lines changed

3 files changed

+17
-11
lines changed

jupyter_server/auth/authorizer.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@
77
"""
88
# Copyright (c) Jupyter Development Team.
99
# Distributed under the terms of the Modified BSD License.
10+
from traitlets import Instance
1011
from traitlets.config import LoggingConfigurable
1112

1213
from jupyter_server.base.handlers import JupyterHandler
1314

14-
from .identity import User
15+
from .identity import IdentityProvider, User
1516

1617

1718
class Authorizer(LoggingConfigurable):
@@ -34,6 +35,8 @@ class Authorizer(LoggingConfigurable):
3435
.. versionadded:: 2.0
3536
"""
3637

38+
identity_provider = Instance(IdentityProvider)
39+
3740
def is_authorized(
3841
self, handler: JupyterHandler, user: User, action: str, resource: str
3942
) -> bool:

jupyter_server/base/handlers.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,8 @@ def authorizer(self):
220220
from jupyter_server.auth import AllowAllAuthorizer
221221

222222
self.settings["authorizer"] = AllowAllAuthorizer(
223-
config=self.settings.get("config", None)
223+
config=self.settings.get("config", None),
224+
identity_provider=self.identity_provider,
224225
)
225226

226227
return self.settings.get("authorizer")

jupyter_server/serverapp.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -217,23 +217,23 @@ def __init__(
217217
authorizer=None,
218218
identity_provider=None,
219219
):
220-
if authorizer is None:
220+
if identity_provider is None:
221221
warnings.warn(
222-
"authorizer unspecified. Using permissive AllowAllAuthorizer."
223-
" Specify an authorizer to avoid this message.",
222+
"identity_provider unspecified. Using default IdentityProvider."
223+
" Specify an identity_provider to avoid this message.",
224224
RuntimeWarning,
225225
stacklevel=2,
226226
)
227-
authorizer = AllowAllAuthorizer(parent=jupyter_app)
227+
identity_provider = IdentityProvider(parent=jupyter_app)
228228

229-
if identity_provider is None:
229+
if authorizer is None:
230230
warnings.warn(
231-
"identity_provider unspecified. Using default IdentityProvider."
232-
" Specify an identity_provider to avoid this message.",
231+
"authorizer unspecified. Using permissive AllowAllAuthorizer."
232+
" Specify an authorizer to avoid this message.",
233233
RuntimeWarning,
234234
stacklevel=2,
235235
)
236-
identity_provider = IdentityProvider(parent=jupyter_app)
236+
authorizer = AllowAllAuthorizer(parent=jupyter_app, identity_provider=identity_provider)
237237

238238
settings = self.init_settings(
239239
jupyter_app,
@@ -1861,8 +1861,10 @@ def init_configurables(self):
18611861
parent=self,
18621862
log=self.log,
18631863
)
1864-
self.authorizer = self.authorizer_class(parent=self, log=self.log)
18651864
self.identity_provider = self.identity_provider_class(parent=self, log=self.log)
1865+
self.authorizer = self.authorizer_class(
1866+
parent=self, log=self.log, identity_provider=self.identity_provider
1867+
)
18661868

18671869
def init_logging(self):
18681870
# This prevents double log messages because tornado use a root logger that

0 commit comments

Comments
 (0)