Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @SpringBootApplication
- @EnableOAuth2Client
- @RestController
- @EnableAuthorizationServer
- public class Oauthtutorial1Application extends WebSecurityConfigurerAdapter {
- @RequestMapping("/user")
- public Principal user(Principal principal) {
- return principal;
- }
- public static void main(String[] args) {
- SpringApplication.run(Oauthtutorial1Application.class, args);
- }
- @Autowired
- OAuth2ClientContext oauth2ClientContext;
- @Bean
- public FilterRegistrationBean oauth2ClientFilterRegistration(
- OAuth2ClientContextFilter filter) {
- FilterRegistrationBean registration = new FilterRegistrationBean();
- registration.setFilter(filter);
- registration.setOrder(-100);
- return registration;
- }
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http
- .antMatcher("/**")
- .authorizeRequests()
- .antMatchers( "/","/login**", "/webjars/**", "/error**")
- .permitAll()
- .anyRequest()
- .authenticated()
- .and().exceptionHandling()
- .authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/"))
- .and().logout().logoutSuccessUrl("/").permitAll()
- .and().csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
- .and().addFilterBefore(ssoFilter(), BasicAuthenticationFilter.class);
- }
- private Filter ssoFilter() {
- CompositeFilter filter = new CompositeFilter();
- List<Filter> filters = new ArrayList<>();
- filters.add(ssoFilter(facebook(), "/login/facebook"));
- filters.add(ssoFilter(github(), "/login/github"));
- filter.setFilters(filters);
- return filter;
- }
- private Filter ssoFilter(ClientResources client, String path) {
- OAuth2ClientAuthenticationProcessingFilter filter = new OAuth2ClientAuthenticationProcessingFilter(path);
- OAuth2RestTemplate template = new OAuth2RestTemplate(client.getClient(), oauth2ClientContext);
- filter.setRestTemplate(template);
- UserInfoTokenServices tokenServices = new UserInfoTokenServices(
- client.getResource().getUserInfoUri(), client.getClient().getClientId());
- tokenServices.setRestTemplate(template);
- filter.setTokenServices(tokenServices);
- return filter;
- }
- class ClientResources {
- @NestedConfigurationProperty
- private AuthorizationCodeResourceDetails client = new AuthorizationCodeResourceDetails();
- @NestedConfigurationProperty
- private ResourceServerProperties resource = new ResourceServerProperties();
- public AuthorizationCodeResourceDetails getClient() {
- return client;
- }
- public ResourceServerProperties getResource() {
- return resource;
- }
- }
- @Bean
- @ConfigurationProperties("github")
- public ClientResources github() {
- return new ClientResources();
- }
- @Bean
- @ConfigurationProperties("facebook")
- public ClientResources facebook() {
- return new ClientResources();
- }
- }
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
Add Comment
Please, Sign In to add comment