From 71385aaf81f32d442ee4b19f66452492f47c6197 Mon Sep 17 00:00:00 2001 From: melissap Date: Fri, 9 Jun 2017 09:27:30 +0200 Subject: [PATCH] Include last couple of steps from blog post for getting Principal name --- .../productapp/ProductAppApplication.java | 97 +++++++++---------- src/main/resources/application.properties | 10 +- src/main/resources/templates/products.ftl | 7 +- 3 files changed, 60 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/example/productapp/ProductAppApplication.java b/src/main/java/com/example/productapp/ProductAppApplication.java index 899d6a2..048c0da 100644 --- a/src/main/java/com/example/productapp/ProductAppApplication.java +++ b/src/main/java/com/example/productapp/ProductAppApplication.java @@ -1,5 +1,11 @@ package com.example.productapp; +import java.security.Principal; +import java.util.Arrays; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; + import org.keycloak.adapters.KeycloakConfigResolver; import org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver; import org.keycloak.adapters.springsecurity.KeycloakSecurityComponents; @@ -22,69 +28,62 @@ import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import java.util.Arrays; - @SpringBootApplication public class ProductAppApplication { - public static void main(String[] args) { - SpringApplication.run(ProductAppApplication.class, args); - } + public static void main(String[] args) { + SpringApplication.run(ProductAppApplication.class, args); + } } @Controller class ProductController { + @GetMapping(path = "/products") + public String getProducts(Principal principal, Model model){ + model.addAttribute("principal",principal); + model.addAttribute("products", Arrays.asList("iPad", "iPhone", "iPod")); + return "products"; + } - @GetMapping(path = "/products") - public String getProducts(Model model){ - model.addAttribute("products", Arrays.asList("iPad","iPhone","iPod")); - return "products"; - } - - @GetMapping(path = "/logout") - public String logout(HttpServletRequest request) throws ServletException { - request.logout(); - return "/"; - } + @GetMapping(path = "/logout") + public String logout(HttpServletRequest request) throws ServletException { + request.logout(); + return "/"; + } } @Configuration @EnableWebSecurity @ComponentScan(basePackageClasses = KeycloakSecurityComponents.class) -class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter -{ - /** - * Registers the KeycloakAuthenticationProvider with the authentication manager. - */ - @Autowired - public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { - KeycloakAuthenticationProvider keycloakAuthenticationProvider = keycloakAuthenticationProvider(); - keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(new SimpleAuthorityMapper()); - auth.authenticationProvider(keycloakAuthenticationProvider); - } +class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter { + /** + * Registers the KeycloakAuthenticationProvider with the authentication + * manager. + */ + @Autowired + public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { + KeycloakAuthenticationProvider keycloakAuthenticationProvider = keycloakAuthenticationProvider(); + keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(new SimpleAuthorityMapper()); + auth.authenticationProvider(keycloakAuthenticationProvider); + } - /** - * Defines the session authentication strategy. - */ - @Bean - @Override - protected SessionAuthenticationStrategy sessionAuthenticationStrategy() { - return new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl()); - } + /** + * Defines the session authentication strategy. + */ + @Bean + @Override + protected SessionAuthenticationStrategy sessionAuthenticationStrategy() { + return new RegisterSessionAuthenticationStrategy(new SessionRegistryImpl()); + } - @Bean - public KeycloakConfigResolver KeycloakConfigResolver() {return new KeycloakSpringBootConfigResolver();} + @Bean + public KeycloakConfigResolver KeycloakConfigResolver() { + return new KeycloakSpringBootConfigResolver(); + } - @Override - protected void configure(HttpSecurity http) throws Exception - { - super.configure(http); - http - .authorizeRequests() - .antMatchers("/products*").hasRole("user") - .anyRequest().permitAll(); - } + @Override + protected void configure(HttpSecurity http) throws Exception { + super.configure(http); + http.authorizeRequests().antMatchers("/products*").hasRole("user").anyRequest().permitAll(); + } } - diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 1d9e6d5..6b910bd 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,4 +1,10 @@ -keycloak.auth-server-url=http://localhost:8180/auth -keycloak.realm=springdemo +server.port=8081 + +#keycloak.auth-server-url=http://localhost:8180/auth +keycloak.auth-server-url=http://localhost:8080/auth +#keycloak.realm=springdemo +keycloak.realm=demo keycloak.resource=product-app keycloak.public-client=true + +keycloak.principal-attribute=preferred_username \ No newline at end of file diff --git a/src/main/resources/templates/products.ftl b/src/main/resources/templates/products.ftl index 905b741..d5efef4 100644 --- a/src/main/resources/templates/products.ftl +++ b/src/main/resources/templates/products.ftl @@ -1,11 +1,12 @@ <#import "/spring.ftl" as spring> -

My products

+

Hello ${principal.getName()}

-
-Logout +

+ Logout +

\ No newline at end of file