MicroServices with Spring: Difference between revisions

From My Limbic Wiki
No edit summary
Line 101: Line 101:
  @SpringBootApplication
  @SpringBootApplication
  '''@EnableEurekaClient'''
  '''@EnableEurekaClient'''
* com.microservices.common.'''security'''
* com.microservices.common.'''security'''.JwtConfig.java
  '''@Value("${security.jwt.uri:/auth/**}")'''
  '''@Value("${security.jwt.uri:/auth/**}")'''
  '''@Value("${security.jwt.header:Authorization}")'''
  '''@Value("${security.jwt.header:Authorization}")'''
Line 107: Line 107:
  '''@Value("${security.jwt.expiration:#{24*60*60}}")'''
  '''@Value("${security.jwt.expiration:#{24*60*60}}")'''
  '''@Value("${security.jwt.secret:JwtSecretKey}")'''
  '''@Value("${security.jwt.secret:JwtSecretKey}")'''
* com.microservices.common.'''security'''.UserRole.java
|
|
* com.microservices.auth
* com.microservices.auth

Revision as of 00:21, 21 September 2019

Vulgarization

Specificities in a Spring aborescence

Eureka

Is the registration service, all services will connect to the same adress: http://localhost:9000 for example

Fichiers Server Zuul Image & Gallery
Main
  • com.microservices.server.EurekaServerApplication.java
@SpringBootApplication
@EnableEurekaServer // Enable eureka server
  • com.microservices.zuul.EurekaZuulApplication.java
@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
  • com.microservices.zuul.security.JwtAuthenticationEntryPoint.java
@Component
  • com.microservices.zuul.security.JwtTokenAuthenticationFilter.java
private final JwtConfig jwtConfig; //import com.eureka.common.security.JwtConfig;
  • com.microservices.zuul.security.SecurityTokenConfig.java
@EnableWebSecurity
@Autowired
  private JwtConfig jwtConfig; //import com.eureka.common.security.JwtConfig;
  • com.microservices.image.EurekaImageApplication.java
@SpringBootApplication
@EnableEurekaClient
  • com.microservices.image.controllers.ImageController.java
@RestController
@RequestMapping("/")
@Autowired
   private Environment env;
  • com.microservices.image.entities.Image.java
Pom.xml
  • Dependencies
spring-cloud-starter-netflix-eureka-server
com.sun.xml.bind: jaxb-core, jaxb-api, jaxb-impl
org.springframework.cloud: spring-cloud-dependencies
spring-boot : web, test & devtools
  • Dependencies
spring-cloud-starter-netflix-eureka-client
spring-cloud-starter-netflix-zuul
o.jsonwebtoken: jjwt
org.springframework.cloud: spring-cloud-dependencies
com.microservices.common: SpringEurekaCommon
spring-boot : web, test, devtools & security 
  • Dependencies
spring-cloud-starter-netflix-eureka-client
spring-boot : web, test & devtools
org.springframework.cloud: spring-cloud-starter-sleuth
org.springframework.cloud spring-cloud-dependencies
Properties
spring.application.name=eureka-server
server.port=8761
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
server.port=8762
spring.application.name=zuul-server
eureka.client.service-url.default-zone=http://localhost:8761/eureka/
#zuul.prefix=/api
  • Disable accessing services using service name (i.e. gallery-service).
zuul.ignored-services=*
  • Map paths to services
zuul.routes.gallery-service.path=/gallery/**
zuul.routes.gallery-service.service-id=gallery-service
zuul.routes.auth-service.path=/auth/**
zuul.routes.auth-service.service-id=AUTH-SERVICE$
  • So, if request is "/gallery/view/1", gallery service will get "/view/1".
zuul.routes.auth-service.strip-prefix=false
zuul.routes.auth-service.sensitive-headers=Cookie,Set-Cookie  #Exclude authorization from sensitive headers
 spring.application.name=image-service
 server.port=8200
 eureka.client.service-url.default-zone=http://localhost:8761/eureka
Fichiers Common Auth
Main
  • com.microservices.common
@SpringBootApplication
@EnableEurekaClient
  • com.microservices.common.security.JwtConfig.java
@Value("${security.jwt.uri:/auth/**}")
@Value("${security.jwt.header:Authorization}")
@Value("${security.jwt.prefix:Bearer }")
@Value("${security.jwt.expiration:#{24*60*60}}")
@Value("${security.jwt.secret:JwtSecretKey}")
  • com.microservices.common.security.UserRole.java
  • com.microservices.auth
@SpringBootApplication
@EnableEurekaClient
  • com.microservices.common.security
@EnableWebSecurity
  @Autowired
 private UserDetailsService userDetailsService;
  @Autowired
 private JwtConfig jwtConfig; #from commons
Pom.xml
  • Dependencies
org.springframework.cloud: spring-cloud-starter-netflix-eureka-client
org.springframework.cloud: spring-cloud-dependencies
org.projectlombok: lombok
spring-boot : web, test & devtools
  • Dependencies
spring-cloud-starter-netflix-eureka-client
spring-boot : web, test, devtools & Security
io.jsonwebtoken: jjwt
com.microservices.common: SpringEurekaCommon
Properties
spring.application.name=common-service
server.port=9200
eureka.client.service-url.default-zone=http://localhost:8761/eureka
spring.application.name=auth-service
server.port=9100
eureka.client.service-url.default-zone=http://localhost:8761/eureka