From 38018ea2fe84966920e3c35af99f8e6948f3b23c Mon Sep 17 00:00:00 2001 From: Dario Ghunney Ware Date: Tue, 21 Jan 2025 19:16:57 +0000 Subject: [PATCH] wip --- .../security/CustomLogoutSuccessHandler.java | 3 +-- .../security/oauth2/CustomOAuth2UserService.java | 1 + .../security/oauth2/OAuth2Configuration.java | 15 +++++++-------- src/main/resources/settings.yml.template | 4 ++-- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/main/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandler.java b/src/main/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandler.java index ffeb8d08..d400f346 100644 --- a/src/main/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandler.java +++ b/src/main/java/stirling/software/SPDF/config/security/CustomLogoutSuccessHandler.java @@ -156,8 +156,7 @@ public class CustomLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler { String clientId = null; OAUTH2 oauth = applicationProperties.getSecurity().getOauth2(); - if (authentication instanceof OAuth2AuthenticationToken) { - OAuth2AuthenticationToken oauthToken = (OAuth2AuthenticationToken) authentication; + if (authentication instanceof OAuth2AuthenticationToken oauthToken) { registrationId = oauthToken.getAuthorizedClientRegistrationId(); try { diff --git a/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2UserService.java b/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2UserService.java index 5b2fb994..81fb2f8a 100644 --- a/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2UserService.java +++ b/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2UserService.java @@ -43,6 +43,7 @@ public class CustomOAuth2UserService implements OAuth2UserService registrations = new ArrayList<>(); githubClientRegistration().ifPresent(registrations::add); oidcClientRegistration().ifPresent(registrations::add); googleClientRegistration().ifPresent(registrations::add); keycloakClientRegistration().ifPresent(registrations::add); + if (registrations.isEmpty()) { log.error("At least one OAuth2 provider must be configured"); System.exit(1); @@ -168,6 +163,10 @@ public class OAuth2Configuration { .scope(oauth.getScopes()) .userNameAttributeName(oauth.getUseAsUsername()) .clientName("OIDC") + .redirectUri("{baseUrl}/login/oauth2/code/oidc") + .authorizationGrantType( + org.springframework.security.oauth2.core.AuthorizationGrantType + .AUTHORIZATION_CODE) .build()); } diff --git a/src/main/resources/settings.yml.template b/src/main/resources/settings.yml.template index ff3821be..5cfea15f 100644 --- a/src/main/resources/settings.yml.template +++ b/src/main/resources/settings.yml.template @@ -12,11 +12,11 @@ security: - enableLogin: false # set to 'true' to enable login + enableLogin: true # set to 'true' to enable login csrfDisabled: false # set to 'true' to disable CSRF protection (not recommended for production) loginAttemptCount: 5 # lock user account after 5 tries; when using e.g. Fail2Ban you can deactivate the function with -1 loginResetTimeMinutes: 120 # lock account for 2 hours after x attempts - loginMethod: all # Accepts values like 'all' and 'normal'(only Login with Username/Password), 'oauth2'(only Login with OAuth2) or 'saml2'(only Login with SAML2) + loginMethod: saml2 # Accepts values like 'all' and 'normal'(only Login with Username/Password), 'oauth2'(only Login with OAuth2) or 'saml2'(only Login with SAML2) initialLogin: username: '' # initial username for the first login password: '' # initial password for the first login