当前位置: 首页 > 知识库问答 >
问题:

使用Spring-Boot-Admin和Eureka discovery进行身份验证

闻人望
2023-03-14

春云雀.放生

我在尤里卡注册了一些服务。这些服务是Spring-Boot应用程序,其执行器由HTTP basic Auth保护。维修执行器为at/Actutor。服务正在工作,我可以通过邮差和卷曲与他们的执行器交互。SBA连接到Eureka并发现服务,但它们总是处于down(红色)状态,除了SBA应用程序本身,它在SBA控制台中显示为绿色,我可以单击它并查看它的属性。

当我单击其中一个服务实例时,系统会提示我输入凭据。我不确定使用什么凭据,所以我使用服务执行器的凭据。我已经在文档中显示的元数据映射中拥有了这些凭据,但仍然会提示我输入凭据。这总是导致显示白标签错误页面,并显示如下错误消息:

并在SBA日志中显示以下内容:

2018-06-25 12:39:40.884错误[SERVICES_ADMIN_CONSOLE_LOCAL,,,]20728---[nio-8080-exec-8]O.A.c.c.[.[/].[dispatcherServlet]:路径为[]的上下文中servlet[dispatcherServlet]的servlet.service()引发异常

IOException:主机中的软件中止了已建立的连接

@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

共有1个答案

姚棋
2023-03-14

对于任何一个遇到这个问题的人来说,和我一样困惑,来弄清楚这个答案。

我在同一个应用程序中有Eureka和Springboot管理服务器/UI

将注册到eureka和springboot admin的所有服务都需要它们自己的/执行器凭据作为元数据提供:

eureka.instance.metadata-map.user.name = ${endpoints.user.name} 
eureka.instance.metadata-map.user.password = ${endpoints.user.password}
 类似资料:
  • 我正在尝试使与和一起工作。我试着按照spring-boot-sample-secure和spring-boot-sample-web-secure中的指南去做,但是我没有让它起作用。 我正在尝试构建一个没有任何ui交互的REST应用程序。因此,我发现这两个样品都不完全适合我的目的。目前我的解决方案是使用AOP。 解决方案对我有效。然而,我想知道这是否是一个好的解决方案。我很好奇是否有更好的解决办法

  • 实际上,我们正在开发一个应用程序,在Spring boot 1.5中,通过oauth2实现的Spring security完成身份验证和授权,现在我们有一个要求,在身份验证部分,拆分身份验证,并将身份验证部分转移到第三方,即SAML集成, 流程:登录- 如何在my spring security中仅使用userid授权用户,并生成自定义令牌(自定义任何spring security筛选器), 如何

  • 我已经使用以下命令启动了,并创建了一个用户来执行此操作(正在工作,因为如果我手动执行工作),直到我添加了这个,它才开始工作,所以也许这就是我需要的。 我错过了什么?

  • 我使用Spring Boot(v1.5.10.RELEASE)为用Angular编写的应用程序创建后端。背面使用Spring安全钥匙斗篷固定。现在我添加了一个websocket,使用STOMP over SockJS,并希望保护它。我试图遵循Websocket令牌身份验证的文档,它显示了以下代码: 我可以使用以下方式从客户端检索无记名令牌: 我的问题是,如何将其转换为身份验证对象?或者如何从这里开

  • 问题内容: 我需要导入证书,以便向Spring Boot应用程序中的外部服务发出http请求。 我该如何设置Spring Boot来做到这一点? 那里有很多信息,但我发现所有这些都令人困惑。似乎我可能只需要创建类似“ truststore.jks”密钥库的内容并导入正确的证书,然后将一些条目添加到我的application.properties中即可。 问题答案: 打开您的终端或 回答所有问题。在

  • 问题内容: 我想为在Raspberry Pi上运行并像本地服务器一样工作的软件制作一些更新脚本。该服务器应连接到Web上的主服务器,以获取软件更新并验证软件的许可证。为此,我设置了两个python脚本。我希望它们通过TLS套接字连接。然后,客户端检查服务器证书,然后服务器检查它是否是授权的客户端之一。我在此页面上找到了解决方案。 现在还有一个问题。我想知道 哪个客户端 (取决于证书)正在建立连接。