【发布时间】:2020-07-01 07:44:45
【问题描述】:
我有一个 Spring Cloud 微服务项目,它使用 Spring Cloud Config Server 来管理配置和 Eureka Server 来发现服务。
在我想使用 keycloak 添加新的微服务之前,我的应用程序运行良好。这个新的微服务只是我的 Vue 前端应用程序的一个 rest API,预计用户管理将由 Keycloak 处理。
新服务运行正常并将自己注册到 Eureka 直到我将 keycloak 依赖项添加到项目中。应用程序不会崩溃或抛出任何错误,启动正常并将自身注册到 Eureka,但在 Spring Boot 管理服务器面板上我看到应用程序已关闭。
这是我的新服务的 .properties 文件。
eureka.instance.preferIpAddress=true
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka
eureka.instance.leaseRenewalIntervalInSeconds=3
eureka.client.eureka-connection-idle-timeout-seconds=3
eureka.client.fetchRegistry=true
spring.boot.admin.client.url=http://localhost:6060
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
server.port=8082
keycloak.auth-server-url=http://localhost:8080/auth
keycloak.realm=microservices
keycloak.resource=microservices-app
keycloak.public-client=true
keycloak.security-constraints[0].authRoles[0]=user
keycloak.security-constraints[0].securityCollections[0].patterns[0]=/*
keycloak.cors=true
这是我对新服务的依赖项。
...
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
<version>4.8.3.Final</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.keycloak.bom</groupId>
<artifactId>keycloak-adapter-bom</artifactId>
<version>4.8.3.Final</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
春云版是Hoxton.SR1
Spring boot 版本为2.2.2.RELEASE
我尝试使用 KeycloakAuthenticationProvider 添加 Spring Security 并进行 java 配置,但没有帮助。
在整个项目中,我遇到了很多由 Spring Cloud 版本或 Spring Cloud-Spring Boot Admin 交互引起的奇怪错误,因此更改版本或在配置文件中添加一个小参数通常可以解决问题,我怀疑这个 Keycloak 问题将是以同样的方式解决。
【问题讨论】:
标签: spring-boot microservices spring-cloud keycloak spring-cloud-netflix