SBA版本2.0.1
Spring-Cloud Finchley。发布
我在尤里卡(Eureka)注册了一些服务。这些服务是Spring-Boot应用程序,其执行器由HTTP基本身份验证保护。维修执行器位于/ actuator。服务正在运行,我可以通过Postman和curl与他们的执行器进行交互。 SBA连接到Eureka并发现服务,但是它们始终处于关闭(红色)状态,但SBA应用程序本身除外,该应用程序在SBA控制台中显示为绿色,因此我可以单击它并查看这是属性。
当我单击其中一个服务实例时,系统会提示我输入凭据。我不确定要使用什么凭证,因此我将凭证用于服务执行器。我已经在docs中显示了元数据映射中的这些凭证,但是无论如何我仍然会被提示输入凭证。这总是导致显示Whitelabel错误页面,并显示如下错误消息:
CDT 2018年6月25日星期一12:40:57发生意外错误 (类型=不允许使用方法,状态= 405)。请求方法“ POST”不正确 支持
尽管我注意到该错误的网址显然在SBA实例本身上,而不是在远程服务上。网址解码为:http://localhost:8080/#/instances/9207aa5fc06b/
但是我在服务的日志中看到了这一点,因此显然有未经身份验证的请求正在将其发送到删除服务:
[2018-06-25 12:16:54.242]-调试-[http-nio-8380-exec-7] [AUTHENTICATION_SERVICE_DEV,8dc8165d4f77be7c,8dc8165d4f77be7c,否] --- [nio-8380-exec-7] o.s.w.s.m.m.a.HttpEntityMethodProcessor:书面[{timestamp = Mon Jun 25 12:16:54 CDT 2018,status = 401, 错误=未经授权,消息=未经授权,路径= /执行器/运行状况}]为 使用“ application / vnd.spring-boot.actuator.v2 + json” [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@30c8681]
这在SBA日志中:
2018-06-25 12:39:40.884错误[SERVICES_ADMIN_CONSOLE_LOCAL ,,] 20728 --- [nio-8080-exec-8] o.a.c.c.C。[。[。[/]。[dispatcherServlet]:在具有路径的上下文中,用于Servlet [dispatcherServlet]的Servlet.service() []抛出异常
java.io.IOException:已建立的连接已被中止 主机中的软件
这是我困惑的根源,我不确定我需要什么凭证,甚至无法验证我的身份。我已经在属性和登录表单中为远程服务提供了凭据,但是它不起作用。
当我在SBA控制台中单击SBA应用程序时,它会按预期工作。因此,这似乎与对远程执行器进行身份验证有关,但我不知道问题出在哪里。
服务器:
@Configuration
@EnableAutoConfiguration
@EnableEurekaClient
@EnableAdminServer
public class ServiceAdmin {
public static void main(String[] args) {
SpringApplication.run(ServiceAdmin.class, args);
}
@Configuration
public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().permitAll()
.and().csrf().disable();
}
}
}
SBA配置:
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
management.info.git.mode=full
management.endpoint.shutdown.enabled=true
spring.security.user.name=actuator
spring.security.user.password=password
spring.security.user.roles=ACTUATOR
eureka.instance.leaseRenewalIntervalInSeconds=10
eureka.instance.health-check-url-path=/actuator/health
eureka.instance.metadata-map.user.name=actuator
eureka.instance.metadata-map.user.password=password
eureka.client.registryFetchIntervalSeconds=5
eureka.client.serviceUrl.defaultZone=http://svcregistry1.mycompany.com/eureka/,http://svcregistry2.mycompany.com
答案 0 :(得分:1)
对于任何一个像我一样困惑的人,想弄清楚这个答案。
我在同一应用程序中有Eureka和Springboot管理服务器/ ui
所有将要注册到eureka和springboot admin的服务都将需要它们自己的/ actuator凭据作为元数据显示:
eureka.instance.metadata-map.user.name = ${endpoints.user.name}
eureka.instance.metadata-map.user.password = ${endpoints.user.password}
此帖子清除了一些内容。 https://zoltanaltfatter.com/2018/05/15/spring-cloud-discovery-with-spring-boot-admin/
答案 1 :(得分:0)
这里的问题是我无法理解文档。元数据映射中的eureka凭证必须在注册时由受监视的应用程序提供。 SBA配置中未提供。