View Javadoc
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  	 * Writes the request URI (and optionally the query string) to the Commons Log.
28  	 *
29  	 * @return the filter registration bean for the {@link CommonsRequestLoggingFilter}.
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  }