Skip to content

give authorizer handle on identity provider #830

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 3, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion jupyter_server/auth/authorizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@
"""
# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.
from traitlets import Instance
from traitlets.config import LoggingConfigurable

from jupyter_server.base.handlers import JupyterHandler

from .identity import User
from .identity import IdentityProvider, User


class Authorizer(LoggingConfigurable):
Expand All @@ -34,6 +35,8 @@ class Authorizer(LoggingConfigurable):
.. versionadded:: 2.0
"""

identity_provider = Instance(IdentityProvider)

def is_authorized(
self, handler: JupyterHandler, user: User, action: str, resource: str
) -> bool:
Expand Down
3 changes: 2 additions & 1 deletion jupyter_server/base/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,8 @@ def authorizer(self):
from jupyter_server.auth import AllowAllAuthorizer

self.settings["authorizer"] = AllowAllAuthorizer(
config=self.settings.get("config", None)
config=self.settings.get("config", None),
identity_provider=self.identity_provider,
)

return self.settings.get("authorizer")
Expand Down
20 changes: 11 additions & 9 deletions jupyter_server/serverapp.py
Original file line number Diff line number Diff line change
Expand Up @@ -217,23 +217,23 @@ def __init__(
authorizer=None,
identity_provider=None,
):
if authorizer is None:
if identity_provider is None:
warnings.warn(
"authorizer unspecified. Using permissive AllowAllAuthorizer."
" Specify an authorizer to avoid this message.",
"identity_provider unspecified. Using default IdentityProvider."
" Specify an identity_provider to avoid this message.",
RuntimeWarning,
stacklevel=2,
)
authorizer = AllowAllAuthorizer(parent=jupyter_app)
identity_provider = IdentityProvider(parent=jupyter_app)

if identity_provider is None:
if authorizer is None:
warnings.warn(
"identity_provider unspecified. Using default IdentityProvider."
" Specify an identity_provider to avoid this message.",
"authorizer unspecified. Using permissive AllowAllAuthorizer."
" Specify an authorizer to avoid this message.",
RuntimeWarning,
stacklevel=2,
)
identity_provider = IdentityProvider(parent=jupyter_app)
authorizer = AllowAllAuthorizer(parent=jupyter_app, identity_provider=identity_provider)

settings = self.init_settings(
jupyter_app,
Expand Down Expand Up @@ -1861,8 +1861,10 @@ def init_configurables(self):
parent=self,
log=self.log,
)
self.authorizer = self.authorizer_class(parent=self, log=self.log)
self.identity_provider = self.identity_provider_class(parent=self, log=self.log)
self.authorizer = self.authorizer_class(
parent=self, log=self.log, identity_provider=self.identity_provider
)

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