1 package org.oxerr.spring.security.guest.samples.helloworld;
2
3 import org.apache.logging.log4j.LogManager;
4 import org.apache.logging.log4j.Logger;
5 import org.oxerr.spring.security.guest.authentication.GuestAuthenticationToken;
6 import org.oxerr.spring.security.guest.core.userdetails.GuestUserDetailsService;
7 import org.springframework.boot.SpringApplication;
8 import org.springframework.boot.autoconfigure.SpringBootApplication;
9 import org.springframework.boot.web.servlet.FilterRegistrationBean;
10 import org.springframework.context.annotation.Bean;
11 import org.springframework.core.Ordered;
12 import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
13 import org.springframework.security.core.authority.AuthorityUtils;
14 import org.springframework.security.core.userdetails.User;
15 import org.springframework.security.core.userdetails.UserDetails;
16 import org.springframework.session.web.http.HeaderHttpSessionStrategy;
17 import org.springframework.session.web.http.HttpSessionStrategy;
18 import org.springframework.web.filter.CommonsRequestLoggingFilter;
19
20 @SpringBootApplication
21 @EnableGlobalMethodSecurity(jsr250Enabled = true)
22 public class Application {
23
24 private final Logger log = LogManager.getLogger();
25
26
27
28
29
30
31 @Bean
32 public FilterRegistrationBean<CommonsRequestLoggingFilter> commonsRequestLoggingFilterRegistrationBean() {
33 FilterRegistrationBean<CommonsRequestLoggingFilter> registrationBean = new FilterRegistrationBean<>();
34 CommonsRequestLoggingFilter requestLoggingFilter = new CommonsRequestLoggingFilter();
35 registrationBean.setFilter(requestLoggingFilter);
36 registrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE);
37 return registrationBean;
38 }
39
40 @Bean
41 public HttpSessionStrategy httpSessionStrategy() {
42 return new HeaderHttpSessionStrategy();
43 }
44
45 @Bean
46 public GuestUserDetailsService guestUserDetailsService() {
47 return new GuestUserDetailsService() {
48
49 @Override
50 public UserDetails loadUser(GuestAuthenticationToken guestAuthenticationToken) {
51 String clientToken = (String) guestAuthenticationToken.getPrincipal();
52 log.debug("Loading user for {}", clientToken);
53 return new User("guest " + clientToken, "", AuthorityUtils.createAuthorityList("ROLE_GUEST"));
54 }
55
56 };
57 }
58
59 public static void main(String[] args) {
60 SpringApplication.run(Application.class, args);
61 }
62
63 }