From 7a06ecbf845ac4478c7cce7da15af97c930cc18c Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Mon, 12 Aug 2024 12:19:58 +0200 Subject: [PATCH] Only load authnz routes when oidc enabled We don't construct the necessary manager, so no use exposing API routes that won't work: ```python self.authnz_manager = None if self.config.enable_oidc: from galaxy.authnz import managers self.authnz_manager = managers.AuthnzManager( self, self.config.oidc_config_file, self.config.oidc_backends_config_file ) ``` Fixes https://github.com/galaxyproject/galaxy/issues/18682: ``` AttributeError: 'NoneType' object has no attribute 'get_allowed_idps' (2 additional frame(s) were not displayed) ... File "galaxy/web/framework/middleware/statsd.py", line 29, in __call__ req = self.application(environ, start_response) File "galaxy/web/framework/base.py", line 176, in __call__ return self.handle_request(request_id, path_info, environ, start_response) File "galaxy/web/framework/base.py", line 271, in handle_request body = method(trans, **kwargs) File "galaxy/web/framework/decorators.py", line 74, in call_and_format rval = func(self, trans, *args, **kwargs) File "galaxy/webapps/galaxy/controllers/authnz.py", line 210, in get_cilogon_idps if allowed_idps := trans.app.authnz_manager.get_allowed_idps(): Uncaught Exception ``` --- lib/galaxy/webapps/galaxy/buildapp.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/buildapp.py b/lib/galaxy/webapps/galaxy/buildapp.py index 680bd192b865..c9d075756dc7 100644 --- a/lib/galaxy/webapps/galaxy/buildapp.py +++ b/lib/galaxy/webapps/galaxy/buildapp.py @@ -89,17 +89,18 @@ def app_pair(global_conf, load_app_kwds=None, wsgi_preflight=True, **kwargs): webapp.add_route("/activate", controller="user", action="activate") # Authentication endpoints. - webapp.add_route("/authnz/", controller="authnz", action="index", provider=None) - webapp.add_route("/authnz/{provider}/login", controller="authnz", action="login", provider=None) - webapp.add_route("/authnz/{provider}/callback", controller="authnz", action="callback", provider=None) - webapp.add_route( - "/authnz/{provider}/disconnect/{email}", controller="authnz", action="disconnect", provider=None, email=None - ) - webapp.add_route("/authnz/{provider}/logout", controller="authnz", action="logout", provider=None) - webapp.add_route("/authnz/{provider}/create_user", controller="authnz", action="create_user") - # Returns the provider specific logout url for currently logged in provider - webapp.add_route("/authnz/logout", controller="authnz", action="get_logout_url") - webapp.add_route("/authnz/get_cilogon_idps", controller="authnz", action="get_cilogon_idps") + if app.config.enable_oidc: + webapp.add_route("/authnz/", controller="authnz", action="index", provider=None) + webapp.add_route("/authnz/{provider}/login", controller="authnz", action="login", provider=None) + webapp.add_route("/authnz/{provider}/callback", controller="authnz", action="callback", provider=None) + webapp.add_route( + "/authnz/{provider}/disconnect/{email}", controller="authnz", action="disconnect", provider=None, email=None + ) + webapp.add_route("/authnz/{provider}/logout", controller="authnz", action="logout", provider=None) + webapp.add_route("/authnz/{provider}/create_user", controller="authnz", action="create_user") + # Returns the provider specific logout url for currently logged in provider + webapp.add_route("/authnz/logout", controller="authnz", action="get_logout_url") + webapp.add_route("/authnz/get_cilogon_idps", controller="authnz", action="get_cilogon_idps") # These two routes handle our simple needs at the moment webapp.add_route(