refactor cloud security ex

This commit is contained in:
Loredana Crusoveanu 2018-01-17 22:57:20 +02:00
parent 8aadc36e24
commit 1cb252d052
27 changed files with 127 additions and 171 deletions

View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.baeldung</groupId>
<artifactId>auth-server</artifactId>
<artifactId>authserver</artifactId>
<version>0.0.1-SNAPSHOT</version>

View File

@ -1,15 +1,12 @@
package com.cloudsecurity.auth;
package com.baeldung;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.*;
@SpringBootApplication
public class AuthServer {
public static void main(String[] args) {
// TODO Auto-generated method stub
SpringApplication.run(
AuthServer.class, args);
SpringApplication.run(AuthServer.class, args);
}
}

View File

@ -1,4 +1,4 @@
package com.cloudsecurity.auth.config;
package com.baeldung.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
@ -11,9 +11,6 @@ import org.springframework.security.oauth2.config.annotation.web.configuration.R
@Configuration
@EnableResourceServer
public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.antMatcher("/user")

View File

@ -1,10 +1,9 @@
package com.cloudsecurity.auth.config;
package com.baeldung.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class WebMvcConfigurer extends WebMvcConfigurerAdapter {

View File

@ -1,6 +1,5 @@
package com.cloudsecurity.auth.config;
package com.baeldung.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
@ -9,7 +8,6 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.oauth2.client.OAuth2ClientContext;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableOAuth2Client;
@Configuration

View File

@ -1,4 +1,4 @@
package com.cloudsecurity.auth.controller;
package com.baeldung.controller;
import java.security.Principal;
import org.springframework.web.bind.annotation.RequestMapping;

View File

@ -2,18 +2,18 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>springoath2</artifactId>
<groupId>com.baeldung</groupId>
<artifactId>oauth2client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springoath2</name>
<name>oauth2client</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
<version>1.5.9.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>

View File

@ -1,12 +1,11 @@
package com.cloud.springwebsite;
package com.baeldung;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.context.annotation.Bean;
import com.cloudsite.filters.pre.SimpleFilter;
import com.baeldung.filters.SimpleFilter;
@SpringBootApplication
@ -15,7 +14,6 @@ public class CloudSite {
SpringApplication.run(CloudSite.class, args);
}
@Bean
public SimpleFilter simpleFilter() {
return new SimpleFilter();

View File

@ -1,4 +1,4 @@
package com.cloud.springwebsite.config;
package com.baeldung.config;
import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

View File

@ -1,11 +1,7 @@
package com.cloud.springwebsite.controller;
import java.net.URI;
package com.baeldung.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestOperations;
@ -17,22 +13,17 @@ public class CloudSiteController {
@Autowired
private RestOperations restOperations;
@Value("${person.url}")
private String personUrl;
@RequestMapping("/")
@GetMapping("/")
@ResponseBody
public String helloFromBaeldung() {
return "Hello From Baeldung!";
}
@RequestMapping("/person")
public ModelAndView person(){
@GetMapping("/person")
public ModelAndView person() {
ModelAndView mav = new ModelAndView("personinfo");
mav.addObject("person",restOperations.getForObject(personUrl, String.class));
String personResourceUrl = "http://localhost:9000/personResource";
mav.addObject("person", restOperations.getForObject(personResourceUrl, String.class));
return mav;
}

View File

@ -0,0 +1,39 @@
package com.baeldung.filters;
import javax.servlet.http.HttpServletRequest;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.ZuulFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SimpleFilter extends ZuulFilter {
private static Logger log = LoggerFactory.getLogger(SimpleFilter.class);
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 1;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
log.info(String.format("%s request to %s", request.getMethod(), request.getRequestURL().toString()));
return null;
}
}

View File

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>Getting Personal Information</title>
</head>
<body>
<h1>Providing Person Information</h1>
<p>
Person's information: <span id="personInfo" th:text="${person}"></span>
</p>
</body>
</html>

View File

@ -3,18 +3,18 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.baeldung.service</groupId>
<artifactId>personservice</artifactId>
<groupId>com.baeldung</groupId>
<artifactId>personresource</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>personservice</name>
<name>personresource</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
<version>1.5.9.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>

View File

@ -1,12 +1,12 @@
package com.baeldung.service.personservice;
package com.baeldung;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class PersonserviceApplication {
public class Application {
public static void main(String[] args) {
SpringApplication.run(PersonserviceApplication.class, args);
SpringApplication.run(Application.class, args);
}
}

View File

@ -1,4 +1,4 @@
package com.baeldung.service.personservice.config;
package com.baeldung.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;

View File

@ -0,0 +1,21 @@
package com.baeldung.controller;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.baeldung.model.Person;
import com.google.gson.Gson;
@RestController
public class PersonInfoController {
@GetMapping("/personResource")
@PreAuthorize("hasAnyRole('ADMIN', 'USER')")
public @ResponseBody String personInfo() {
Gson gson = new Gson();
String person = gson.toJson(new Person("abir", "Dhaka", "Bangladesh", 29, "Male"));
return person;
}
}

View File

@ -1,4 +1,4 @@
package com.baeldung.service.model;
package com.baeldung.model;
public class Person {
@ -8,7 +8,7 @@ public class Person {
private Integer age;
private String sex;
public Person(String name, String city, String country, Integer age, String sex){
public Person(String name, String city, String country, Integer age, String sex) {
this.name = name;
this.city = city;
this.country = country;
@ -16,34 +16,42 @@ public class Person {
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}

View File

@ -1,7 +1,4 @@
# Make the application available at http://localhost:9000
#spring:
# session:
# store-type: redis
server:
port: 9000

View File

@ -1,31 +0,0 @@
package com.baeldung.service.personservice.controller;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.baeldung.service.model.Person;
import com.google.gson.Gson;
@RestController
public class PersonInfoController {
@RequestMapping(value = "/currenttime")
@PreAuthorize("hasAnyRole('ADMIN', 'USER')")
public String currentTime(){
return LocalTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME);
}
@RequestMapping(value = "/person")
@PreAuthorize("hasAnyRole('ADMIN', 'USER')")
public @ResponseBody String personInfo(){
Gson gson = new Gson();
String person = gson.toJson(new Person("abir","Dhaka", "Bangladesh",29,"Male"));
return person;
}
}

View File

@ -1,39 +0,0 @@
package com.cloudsite.filters.pre;
import javax.servlet.http.HttpServletRequest;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.ZuulFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SimpleFilter extends ZuulFilter {
private static Logger log = LoggerFactory.getLogger(SimpleFilter.class);
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 1;
}
@Override
public boolean shouldFilter() {
return true;
}
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
log.info(String.format("%s request to %s", request.getMethod(), request.getRequestURL().toString()));
return null;
}
}

View File

@ -1,32 +0,0 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>My Website - Getting Personal Information</title>
<script th:inline="javascript">
/*<![CDATA[*/
function refreshTime() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("currentTime").innerHTML = xhttp.responseText;
}
};
xhttp.open("GET", "/api/currenttime", true);
xhttp.send();
}
/*]]>*/
</script>
</head>
<body>
<h1>Providing Person Information</h1>
<p>
Person's information: <span id="personInfo" th:text="${person}"></span>
</p>
<p>
The current time is: <span id="currentTime"></span>
</p>
<button onclick="refreshTime();">GET Current Time</button>
</body>
</html>