Skip to content

Commit f229230

Browse files
committed
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 eff1b08 commit f229230

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,
@@ -1858,8 +1858,10 @@ def init_configurables(self):
18581858
parent=self,
18591859
log=self.log,
18601860
)
1861-
self.authorizer = self.authorizer_class(parent=self, log=self.log)
18621861
self.identity_provider = self.identity_provider_class(parent=self, log=self.log)
1862+
self.authorizer = self.authorizer_class(
1863+
parent=self, log=self.log, identity_provider=self.identity_provider
1864+
)
18631865

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

0 commit comments

Comments
 (0)