有3个服务。
我已经配置了eureka服务器,它已经启动并运行,我已经注册了用户服务。@EnableDiscoveryClient
application.properties(user-service)
spring.application.name=user-service
server.port=8040
eureka.instance.hostname=localhost
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka
我可以看到已注册的用户服务,对于Spring Boot应用来说是可以的。
我如何将Keycloak注册到Eureka Discovery服务中?
你可以尝试使用spring security和内置的keycloak支持。https:/www.baeldung.comspring-boot-keycloak] 给出了一个非常完整的例子。
为了完整起见,这里是指南中的相关摘录。如果您还没有,您将需要在您的pom.xml中添加springs keycloak的依赖关系。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.keycloak.bom</groupId>
<artifactId>keycloak-adapter-bom</artifactId>
<version>3.3.0.Final</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
...
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
</dependency>
你可以通过应用程序属性来配置Spring。然后简单地设置你的Spring安全配置类,扩展keycloak适配器。
@Configuration
@EnableWebSecurity
@ComponentScan(basePackageClasses = KeycloakSecurityComponents.class)
class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(
AuthenticationManagerBuilder auth) throws Exception {
KeycloakAuthenticationProvider keycloakAuthenticationProvider
= keycloakAuthenticationProvider();
keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(
new SimpleAuthorityMapper());
auth.authenticationProvider(keycloakAuthenticationProvider);
}
@Bean
public KeycloakSpringBootConfigResolver KeycloakConfigResolver() {
return new KeycloakSpringBootConfigResolver();
}
@Bean
@Override
protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {
return new RegisterSessionAuthenticationStrategy(
new SessionRegistryImpl());
}
}