From 6aff5d5c66983aa05f0ac16aa5c8f973e5345cf3 Mon Sep 17 00:00:00 2001 From: Harry9656 Date: Wed, 21 Feb 2024 20:37:27 +0100 Subject: [PATCH] JAVA-29330: Migrate spring-security-web-rest-custom to parent-boot-3. (#15932) --- .../spring-security-web-rest-custom/pom.xml | 24 ++++++------ .../config/MainWebAppInitializer.java | 18 +++------ .../config/child/MethodSecurityConfig.java | 11 +++--- .../com/baeldung/config/child/WebConfig.java | 25 +++++-------- .../config/parent/SecurityConfig.java | 20 +++++----- .../baeldung/config/parent/ServiceConfig.java | 6 --- .../security/AuthenticationFacade.java | 2 - .../CustomAuthenticationProvider.java | 18 ++++----- ...uestAwareAuthenticationSuccessHandler.java | 8 ++-- .../RestAuthenticationEntryPoint.java | 6 +-- .../java/com/baeldung/service/FooService.java | 12 +++--- .../com/baeldung/service/RunAsService.java | 5 +-- .../web/controller/FooController.java | 37 ++++++++----------- .../GetUserWithAuthenticationController.java | 13 ++----- .../GetUserWithCustomInterfaceController.java | 23 +++++------- ...tUserWithHTTPServletRequestController.java | 15 +++----- .../GetUserWithPrincipalController.java | 13 ++----- ...erWithSecurityContextHolderController.java | 22 ++--------- .../web/controller/RunAsController.java | 7 +--- .../main/webapp/WEB-INF/templates/runas.html | 5 +-- 20 files changed, 111 insertions(+), 179 deletions(-) diff --git a/spring-security-modules/spring-security-web-rest-custom/pom.xml b/spring-security-modules/spring-security-web-rest-custom/pom.xml index 2e55fe8b89..265adfa551 100644 --- a/spring-security-modules/spring-security-web-rest-custom/pom.xml +++ b/spring-security-modules/spring-security-web-rest-custom/pom.xml @@ -10,8 +10,9 @@ com.baeldung - spring-security-modules + parent-boot-3 0.0.1-SNAPSHOT + ../../parent-boot-3 @@ -26,11 +27,11 @@ org.thymeleaf.extras - thymeleaf-extras-springsecurity5 + thymeleaf-extras-springsecurity6 org.thymeleaf - thymeleaf-spring5 + thymeleaf-spring6 @@ -85,23 +86,24 @@ - javax.servlet - javax.servlet-api + jakarta.servlet + jakarta.servlet-api provided - javax.servlet - jstl + jakarta.servlet.jsp.jstl + jakarta.servlet.jsp.jstl-api runtime + - org.apache.httpcomponents - httpcore + org.apache.httpcomponents.core5 + httpcore5 - org.apache.httpcomponents - httpclient + org.apache.httpcomponents.client5 + httpclient5 diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/MainWebAppInitializer.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/MainWebAppInitializer.java index 4957a2604a..565bc999d4 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/MainWebAppInitializer.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/MainWebAppInitializer.java @@ -2,36 +2,28 @@ package com.baeldung.config; import java.util.Set; -import javax.servlet.FilterRegistration.Dynamic; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRegistration; - import org.springframework.web.WebApplicationInitializer; import org.springframework.web.context.ContextLoaderListener; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.filter.DelegatingFilterProxy; import org.springframework.web.servlet.DispatcherServlet; +import jakarta.servlet.FilterRegistration.Dynamic; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletRegistration; + public class MainWebAppInitializer implements WebApplicationInitializer { public MainWebAppInitializer() { super(); } - // - - /** - * Register and configure all Servlet container components necessary to power the web application. - */ @Override - public void onStartup(final ServletContext sc) throws ServletException { + public void onStartup(final ServletContext sc) { System.out.println("MyWebAppInitializer.onStartup()"); - // Create the 'root' Spring application context final AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext(); root.scan("com.baeldung.config.parent"); - // root.getEnvironment().setDefaultProfiles("embedded"); // Manages the lifecycle of the root application context sc.addListener(new ContextLoaderListener(root)); diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/child/MethodSecurityConfig.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/child/MethodSecurityConfig.java index 7fb282ae8b..50adc676dd 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/child/MethodSecurityConfig.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/child/MethodSecurityConfig.java @@ -8,15 +8,14 @@ import org.springframework.security.access.intercept.RunAsManager; import org.springframework.security.access.intercept.RunAsManagerImpl; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; -import org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration; +import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; @Configuration -@EnableGlobalMethodSecurity(securedEnabled = true) -public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration { +@EnableMethodSecurity(securedEnabled = true) +public class MethodSecurityConfig { - @Override + @Bean protected RunAsManager runAsManager() { RunAsManagerImpl runAsManager = new RunAsManagerImpl(); runAsManager.setKey("MyRunAsKey"); @@ -24,7 +23,7 @@ public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration { } @Autowired - public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + public void configureGlobal(AuthenticationManagerBuilder auth) { auth.authenticationProvider(runAsAuthenticationProvider()); } diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/child/WebConfig.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/child/WebConfig.java index 011528e3cc..9e69e7ef80 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/child/WebConfig.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/child/WebConfig.java @@ -2,7 +2,6 @@ package com.baeldung.config.child; import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; @@ -13,37 +12,31 @@ import org.springframework.http.converter.json.MappingJackson2HttpMessageConvert import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import org.thymeleaf.extras.springsecurity5.dialect.SpringSecurityDialect; -import org.thymeleaf.spring5.ISpringTemplateEngine; -import org.thymeleaf.spring5.SpringTemplateEngine; -import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver; -import org.thymeleaf.spring5.view.ThymeleafViewResolver; +import org.thymeleaf.extras.springsecurity6.dialect.SpringSecurityDialect; +import org.thymeleaf.spring6.ISpringTemplateEngine; +import org.thymeleaf.spring6.SpringTemplateEngine; +import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver; +import org.thymeleaf.spring6.view.ThymeleafViewResolver; import org.thymeleaf.templatemode.TemplateMode; import org.thymeleaf.templateresolver.ITemplateResolver; @Configuration @EnableWebMvc @ComponentScan("com.baeldung.web") -//@ImportResource({ "classpath:prop.xml" }) -//@PropertySource("classpath:foo.properties") public class WebConfig implements WebMvcConfigurer { - - @Autowired - private ApplicationContext applicationContext; - public WebConfig() { + private final ApplicationContext applicationContext; + + public WebConfig(ApplicationContext applicationContext) { super(); + this.applicationContext = applicationContext; } - // beans - @Override public void configureMessageConverters(final List> converters) { converters.add(new MappingJackson2HttpMessageConverter()); } - // beans - @Bean public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { final PropertySourcesPlaceholderConfigurer ppc = new PropertySourcesPlaceholderConfigurer(); diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/parent/SecurityConfig.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/parent/SecurityConfig.java index 8682afbff9..a5ae48abb1 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/parent/SecurityConfig.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/parent/SecurityConfig.java @@ -1,10 +1,10 @@ package com.baeldung.config.parent; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; @@ -18,8 +18,11 @@ import com.baeldung.security.CustomAuthenticationProvider; @ComponentScan("com.baeldung.security") public class SecurityConfig { - @Autowired - private CustomAuthenticationProvider authProvider; + private final CustomAuthenticationProvider authProvider; + + public SecurityConfig(CustomAuthenticationProvider authProvider) { + this.authProvider = authProvider; + } @Bean public AuthenticationManager authManager(HttpSecurity http) throws Exception { @@ -30,12 +33,9 @@ public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { - http.authorizeRequests() - .anyRequest() - .authenticated() - .and() - .httpBasic(); - return http.build(); + return http.authorizeHttpRequests(request -> request.anyRequest() + .authenticated()) + .httpBasic(Customizer.withDefaults()) + .build(); } - } diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/parent/ServiceConfig.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/parent/ServiceConfig.java index 55f837f674..b27c7961c2 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/parent/ServiceConfig.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/config/parent/ServiceConfig.java @@ -12,12 +12,6 @@ import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; @PropertySource("classpath:foo.properties") public class ServiceConfig { - public ServiceConfig() { - super(); - } - - // beans - @Bean public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { final PropertySourcesPlaceholderConfigurer ppc = new PropertySourcesPlaceholderConfigurer(); diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/AuthenticationFacade.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/AuthenticationFacade.java index bcf0ef0499..975f65c5f7 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/AuthenticationFacade.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/AuthenticationFacade.java @@ -11,8 +11,6 @@ public class AuthenticationFacade implements IAuthenticationFacade { super(); } - // API - @Override public final Authentication getAuthentication() { return SecurityContextHolder.getContext().getAuthentication(); diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/CustomAuthenticationProvider.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/CustomAuthenticationProvider.java index 8e67714431..251d8dcfa6 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/CustomAuthenticationProvider.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/CustomAuthenticationProvider.java @@ -20,21 +20,21 @@ public class CustomAuthenticationProvider implements AuthenticationProvider { super(); } - // API - @Override public Authentication authenticate(final Authentication authentication) throws AuthenticationException { final String name = authentication.getName(); final String password = authentication.getCredentials().toString(); - if (name.equals("admin") && password.equals("system")) { - final List grantedAuths = new ArrayList<>(); - grantedAuths.add(new SimpleGrantedAuthority("ROLE_USER")); - final UserDetails principal = new User(name, password, grantedAuths); - final Authentication auth = new UsernamePasswordAuthenticationToken(principal, password, grantedAuths); - return auth; - } else { + if (!"admin".equals(name) || !"system".equals(password)) { return null; } + return authenticateAgainstThirdPartyAndGetAuthentication(name, password); + } + + private static UsernamePasswordAuthenticationToken authenticateAgainstThirdPartyAndGetAuthentication(String name, String password) { + final List grantedAuths = new ArrayList<>(); + grantedAuths.add(new SimpleGrantedAuthority("ROLE_USER")); + final UserDetails principal = new User(name, password, grantedAuths); + return new UsernamePasswordAuthenticationToken(principal, password, grantedAuths); } @Override diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java index 7dc53e3e1e..32b10665e0 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/MySavedRequestAwareAuthenticationSuccessHandler.java @@ -2,10 +2,6 @@ package com.baeldung.security; import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler; import org.springframework.security.web.savedrequest.HttpSessionRequestCache; @@ -13,6 +9,10 @@ import org.springframework.security.web.savedrequest.RequestCache; import org.springframework.security.web.savedrequest.SavedRequest; import org.springframework.util.StringUtils; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + public class MySavedRequestAwareAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler { private RequestCache requestCache = new HttpSessionRequestCache(); diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java index 1ae89adb89..b9c29fdbff 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/security/RestAuthenticationEntryPoint.java @@ -2,13 +2,13 @@ package com.baeldung.security; import java.io.IOException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.stereotype.Component; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + /** * The Entry Point will not redirect to any sort of Login - it will return the 401 */ diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/FooService.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/FooService.java index f97c357566..614761a4ee 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/FooService.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/FooService.java @@ -1,27 +1,25 @@ package com.baeldung.service; -import com.baeldung.web.dto.Foo; import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; +import com.baeldung.web.dto.Foo; + @Service public class FooService implements IFooService, InitializingBean { @Value("${foo1}") private String foo1; - @Autowired - private Environment env; + private final Environment env; - public FooService() { + public FooService(Environment env) { super(); + this.env = env; } - // API - @Override public Foo findOne(final Long id) { return new Foo(); diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/RunAsService.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/RunAsService.java index 412330006b..866d293a29 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/RunAsService.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/service/RunAsService.java @@ -10,8 +10,7 @@ public class RunAsService { @Secured({ "ROLE_RUN_AS_REPORTER" }) public Authentication getCurrentUser() { - Authentication authentication = - SecurityContextHolder.getContext().getAuthentication(); - return authentication; + return SecurityContextHolder.getContext() + .getAuthentication(); } } \ No newline at end of file diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/FooController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/FooController.java index 696dcccd02..60c9fdb2c9 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/FooController.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/FooController.java @@ -1,39 +1,34 @@ package com.baeldung.web.controller; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.env.Environment; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + import com.baeldung.service.IFooService; import com.baeldung.web.dto.Foo; -import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.core.env.Environment; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; -@Controller +@RestController @RequestMapping(value = "/foos") public class FooController implements InitializingBean { @Value("${foo1}") private String foo1; - @Autowired - private Environment env; + private final Environment env; + private final IFooService service; - @Autowired - private IFooService service; - - public FooController() { + public FooController(Environment env, IFooService service) { super(); + this.env = env; + this.service = service; } - // API - - @RequestMapping(value = "/{id}", method = RequestMethod.GET) - @ResponseBody - public Foo findOne(@PathVariable("id") final Long id) { + @GetMapping(value = "/{id}") + public Foo findOne(@PathVariable(name = "id") final Long id) { return service.findOne(id); } diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithAuthenticationController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithAuthenticationController.java index 4f9b24cf36..9fcda178d0 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithAuthenticationController.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithAuthenticationController.java @@ -2,22 +2,17 @@ package com.baeldung.web.controller; import org.springframework.security.core.Authentication; import org.springframework.security.core.userdetails.UserDetails; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; -@Controller +@RestController public class GetUserWithAuthenticationController { public GetUserWithAuthenticationController() { super(); } - // API - - @RequestMapping(value = "/username3", method = RequestMethod.GET) - @ResponseBody + @GetMapping(value = "/username3") public String currentUserNameSimple(final Authentication authentication) { UserDetails userDetails = (UserDetails) authentication.getPrincipal(); System.out.println("Retrieved user with authorities: " + userDetails.getAuthorities()); diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithCustomInterfaceController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithCustomInterfaceController.java index 4166ca9102..c547a9ad1d 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithCustomInterfaceController.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithCustomInterfaceController.java @@ -1,27 +1,22 @@ package com.baeldung.web.controller; -import com.baeldung.security.IAuthenticationFacade; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; -@Controller +import com.baeldung.security.IAuthenticationFacade; + +@RestController public class GetUserWithCustomInterfaceController { - @Autowired - private IAuthenticationFacade authenticationFacade; + private final IAuthenticationFacade authenticationFacade; - public GetUserWithCustomInterfaceController() { + public GetUserWithCustomInterfaceController(IAuthenticationFacade authenticationFacade) { super(); + this.authenticationFacade = authenticationFacade; } - // API - - @RequestMapping(value = "/username5", method = RequestMethod.GET) - @ResponseBody + @GetMapping(value = "/username5") public String currentUserNameSimple() { final Authentication authentication = authenticationFacade.getAuthentication(); return authentication.getName(); diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithHTTPServletRequestController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithHTTPServletRequestController.java index 2e6951132d..e287185d91 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithHTTPServletRequestController.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithHTTPServletRequestController.java @@ -2,24 +2,19 @@ package com.baeldung.web.controller; import java.security.Principal; -import javax.servlet.http.HttpServletRequest; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; +import jakarta.servlet.http.HttpServletRequest; -@Controller +@RestController public class GetUserWithHTTPServletRequestController { public GetUserWithHTTPServletRequestController() { super(); } - // API - - @RequestMapping(value = "/username4", method = RequestMethod.GET) - @ResponseBody + @GetMapping(value = "/username4") public String currentUserNameSimple(final HttpServletRequest request) { final Principal principal = request.getUserPrincipal(); return principal.getName(); diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithPrincipalController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithPrincipalController.java index ed3ea5b25d..cb4cfb35ca 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithPrincipalController.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithPrincipalController.java @@ -2,22 +2,17 @@ package com.baeldung.web.controller; import java.security.Principal; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; -@Controller +@RestController public class GetUserWithPrincipalController { public GetUserWithPrincipalController() { super(); } - // API - - @RequestMapping(value = "/username2", method = RequestMethod.GET) - @ResponseBody + @GetMapping(value = "/username2") public String currentUserName(final Principal principal) { return principal.getName(); } diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithSecurityContextHolderController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithSecurityContextHolderController.java index c63271ef77..5089f29cea 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithSecurityContextHolderController.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/GetUserWithSecurityContextHolderController.java @@ -1,29 +1,15 @@ package com.baeldung.web.controller; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationEventPublisher; import org.springframework.security.authentication.AnonymousAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; -@Controller +@RestController public class GetUserWithSecurityContextHolderController { - @Autowired - private ApplicationEventPublisher eventPublisher; - - public GetUserWithSecurityContextHolderController() { - super(); - } - - // API - - @RequestMapping(value = "/username1", method = RequestMethod.GET) - @ResponseBody + @GetMapping(value = "/username1") public String currentUserName() { final Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (!(authentication instanceof AnonymousAuthenticationToken)) { diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/RunAsController.java b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/RunAsController.java index 13a3f45bf3..bbf0f70782 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/RunAsController.java +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/java/com/baeldung/web/controller/RunAsController.java @@ -3,18 +3,15 @@ package com.baeldung.web.controller; import org.springframework.security.access.annotation.Secured; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; - -@Controller +@RestController @RequestMapping("/runas") public class RunAsController { @Secured({ "ROLE_USER", "RUN_AS_REPORTER" }) @RequestMapping - @ResponseBody public String tryRunAs() { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); return "Current User Authorities inside this RunAS method only " + diff --git a/spring-security-modules/spring-security-web-rest-custom/src/main/webapp/WEB-INF/templates/runas.html b/spring-security-modules/spring-security-web-rest-custom/src/main/webapp/WEB-INF/templates/runas.html index c7c3b2e0e4..7e59c4b155 100644 --- a/spring-security-modules/spring-security-web-rest-custom/src/main/webapp/WEB-INF/templates/runas.html +++ b/spring-security-modules/spring-security-web-rest-custom/src/main/webapp/WEB-INF/templates/runas.html @@ -1,6 +1,5 @@ - + Current user authorities: user @@ -9,7 +8,7 @@ Generate Report As Super User + src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js">