From c5d7dc0765fefbaf794b40f8d5ffb7bd028b1447 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 19 Dec 2019 13:39:05 -0500 Subject: [PATCH 1/5] Fix icons for oidc idps without defined fancy ones. --- client/galaxy/scripts/components/login/Login.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/galaxy/scripts/components/login/Login.vue b/client/galaxy/scripts/components/login/Login.vue index 396a97de72b..c88e6f34caa 100644 --- a/client/galaxy/scripts/components/login/Login.vue +++ b/client/galaxy/scripts/components/login/Login.vue @@ -40,11 +40,11 @@
- + - Sign in with + Sign in with {{ idp.charAt(0).toUpperCase() + idp.slice(1) }} From 9091727668d227ec3726b727731d8c391a16b22d Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 19 Dec 2019 14:21:03 -0500 Subject: [PATCH 2/5] Simplification of oidc icon presentation. --- client/galaxy/scripts/components/login/Login.vue | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/client/galaxy/scripts/components/login/Login.vue b/client/galaxy/scripts/components/login/Login.vue index c88e6f34caa..7246b45555e 100644 --- a/client/galaxy/scripts/components/login/Login.vue +++ b/client/galaxy/scripts/components/login/Login.vue @@ -40,7 +40,9 @@
- + + + @@ -78,20 +80,11 @@ export default { }, data() { const galaxy = getGalaxyInstance(); - const oidc_idps = galaxy.config.oidc; // Icons to use for each IdP const oidc_idps_icons = { google: "https://developers.google.com/identity/images/btn_google_signin_light_normal_web.png", elixir: "https://elixir-europe.org/sites/default/files/images/login-button-orange.png" }; - // Add default icons to IdPs without icons - oidc_idps - .filter(function(key) { - return oidc_idps_icons[key] === undefined; - }) - .forEach(function(idp) { - oidc_idps_icons[idp] = "fa fa-id-card"; - }); return { login: null, password: null, @@ -103,7 +96,7 @@ export default { redirect: galaxy.params.redirect, session_csrf_token: galaxy.session_csrf_token, enable_oidc: galaxy.config.enable_oidc, - oidc_idps: oidc_idps, + oidc_idps: galaxy.config.oidc, oidc_idps_icons: oidc_idps_icons }; }, From 96c33a196dda0cf8afa6dc60fac28c32a7337c59 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 19 Dec 2019 15:06:40 -0500 Subject: [PATCH 3/5] Don't just silently ignore a misconfigured oidc_backends_config provider. --- lib/galaxy/authnz/managers.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/galaxy/authnz/managers.py b/lib/galaxy/authnz/managers.py index 1238a4ce203..b2bcbd94953 100644 --- a/lib/galaxy/authnz/managers.py +++ b/lib/galaxy/authnz/managers.py @@ -104,6 +104,8 @@ class AuthnzManager(object): self.oidc_backends_config[idp] = self._parse_custos_config(child) self.oidc_backends_implementation[idp] = 'custos' self.app.config.oidc.append(idp) + else: + raise ParseError("Unknown provider specified") if len(self.oidc_backends_config) == 0: raise ParseError("No valid provider configuration parsed.") except ImportError: From 0bfeda6726a8a1d48512b9779560799e1a9e5953 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 19 Dec 2019 16:05:19 -0500 Subject: [PATCH 4/5] Fix logout/login redirect loop. We changed logout to go home in a workaround for the loop, but this is a more robust solution that'll also work with require_login --- client/galaxy/scripts/layout/menu.js | 2 +- lib/galaxy/webapps/galaxy/controllers/root.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/client/galaxy/scripts/layout/menu.js b/client/galaxy/scripts/layout/menu.js index abca17e0562..2e4e39502f2 100644 --- a/client/galaxy/scripts/layout/menu.js +++ b/client/galaxy/scripts/layout/menu.js @@ -18,7 +18,7 @@ function logoutClick() { if (galaxy.user) { galaxy.user.clearSessionStorage(); } - window.top.location.href = galaxy.root; + window.top.location.href = `${galaxy.root}login?logout=true` }); } diff --git a/lib/galaxy/webapps/galaxy/controllers/root.py b/lib/galaxy/webapps/galaxy/controllers/root.py index 49fa09f4921..6140289596b 100644 --- a/lib/galaxy/webapps/galaxy/controllers/root.py +++ b/lib/galaxy/webapps/galaxy/controllers/root.py @@ -87,7 +87,8 @@ class RootController(controller.JSAppLauncher, UsesAnnotations): # there is only one oidc provider, 3) auth_conf.xml has no authenticators if (trans.app.config.enable_oidc and len(trans.app.config.oidc) == 1 and - len(trans.app.auth_manager.authenticators) == 0): + len(trans.app.auth_manager.authenticators) == 0 + and not kwd.get('logout', False)): provider = trans.app.config.oidc[0] success, message, redirect_uri = trans.app.authnz_manager.authenticate(provider, trans) From 5b0e30834e2c3fbdf41b04a86be0b893e3e980f0 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 19 Dec 2019 16:09:25 -0500 Subject: [PATCH 5/5] Client formatting. --- client/galaxy/scripts/components/login/Login.vue | 2 +- client/galaxy/scripts/layout/menu.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/galaxy/scripts/components/login/Login.vue b/client/galaxy/scripts/components/login/Login.vue index 7246b45555e..f2410c9cddf 100644 --- a/client/galaxy/scripts/components/login/Login.vue +++ b/client/galaxy/scripts/components/login/Login.vue @@ -40,7 +40,7 @@
- + diff --git a/client/galaxy/scripts/layout/menu.js b/client/galaxy/scripts/layout/menu.js index 2e4e39502f2..b287065292c 100644 --- a/client/galaxy/scripts/layout/menu.js +++ b/client/galaxy/scripts/layout/menu.js @@ -18,7 +18,7 @@ function logoutClick() { if (galaxy.user) { galaxy.user.clearSessionStorage(); } - window.top.location.href = `${galaxy.root}login?logout=true` + window.top.location.href = `${galaxy.root}login?logout=true`; }); }