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

具有X509身份验证的管理端口和服务器端口

魏煜祺
2023-03-14

我有一个通过X509验证的API。但是,我需要从身份验证中绕过我的执行器健康检查endpoint,这样我就可以在没有客户端证书的情况下进行健康检查。

我意识到,这可以通过使用不同的端口来实现,用于执行器endpoint将命中的服务器和管理。

我的application.yml配置如下:

server:
  port: 9000
  ssl:
    key-store: classpath:keystore.jks
    key-store-password: password
    key-password: password
    enabled: true
    trust-store: classpath:truststore.jks
    trust-store-password: password
    client-auth: need
    
management:
  server:
    port: 9010
    ssl:
      enabled: false
    security:
      enabled: false

我的问题是,即使使用这种配置,管理endpoint也不是我可以访问健康endpoint的地方。http://localhost:9010/health-->这不起作用

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter  {
    
    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
        .anyRequest()
        .authenticated()
        .and()
        .x509()
        .subjectPrincipalRegex("CN=(.*?)(?:,|$)")
        .userDetailsService(userDetailsService())
        .and()
        .sessionManagement()
        .sessionCreationPolicy(SessionCreationPolicy.NEVER)
        .and()
        .csrf().disable();
    }
    
    @Bean
    public UserDetailsService userDetailsService() {
        return new UserDetailsService() {
            public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
                if (username.equals("user")) {
                    return new User(username, "", AuthorityUtils.commaSeparatedStringToAuthorityList("ROLE_USER"));
                }
                throw new UsernameNotFoundException("User not found!");
            }
        };
    }

我的POM中有Spring引导执行器依赖关系。我不明白为什么我的管理端口不工作。

有什么建议吗?

共有1个答案

白信鸿
2023-03-14

我发现这里出了什么问题。这是spring boot依赖关系。我正在使用Spring-boot-acture,当我将其改为Spring-boot-starter-acture,管理端口开始监听我配置的端口。然后禁用了该端口上的SSL身份验证。在下面提供我的配置,以便对其他人有帮助:

management:
  server:
    port: 8000
    ssl:
      enabled: false

server:
  port: 9000
  ssl:
    key-store: classpath:keystore.jks
    key-store-password: password
    key-alias: alias
    key-password: password
    enabled: true
    trust-store: classpath:truststore.jks
    trust-store-password: password
    client-auth: need

现在,我可以通过端口8000上的http访问我的执行器endpoint(如health),并通过具有有效客户端证书的https访问端口9000上的应用程序rest API。

 类似资料:
  • 我有一个这样的应用程序工作流程 (A) 用户代理(浏览器) 假设应用服务器(B)是一个SAML服务提供者,user@domain使用Web浏览器SSO配置文件从浏览器(A)到应用服务器(B)进行身份验证。 在(B)上运行的应用程序如何向user@domain.com的REST服务(C)进行身份验证?(假设B和C都是同一IdP上的SAML SP。) 如果浏览器只是对B和C进行AJAX调用,那么就很简

  • 我需要对以下URL执行请求: http://[USERNAME]:[PASSWORD]@[SERVER_IP]:[PORT]/some/path/to/some/file 但是最终生成的URL被视为无效,因为它包含两次:字符。有什么解决办法吗? 这就是我所尝试的:

  • 我想以集中管理的安全方式将EKS中的一些网络应用程序公开到互联网。 在AWS中,使用ALB很好,例如它允许您终止TLS并使用Cognito添加身份验证。(见此处) 要预配ALB并将其连接到应用程序,有aws-load-balancer-控制器。它工作正常,但它需要每个应用程序/入口配置一个新的ALB: 我希望有一个中央定义良好的ALB,所有的应用程序都不需要再关心这个了。 我的想法是拥有一个常规的

  • 问题内容: 为服务器端路由验证用户的最佳方法(最安全,最简单)是什么? 软件/版本 我使用的是最新的Iron Router 1. 和Meteor 1. ,首先,我使用的是Accounts-password。 参考代码 我有一个简单的服务器端路由,可将pdf呈现到屏幕上: 两者/routes.js 举例来说,我想做些类似于该SO答案建议的操作: 在服务器上: 然后在客户端代码中: 但是,即使我以某种

  • 任务:将Kerberos active directory身份验证添加到不安全的报告和数据操作桌面应用程序。此应用程序是。。。 用Stackless Python 2.7编写 使用Twisted进行客户端-服务器交互 客户端编译为exe并在Windows上运行 服务器在Linux(红帽)上运行 目前,我们从用户帐户中提取Windows网络ID(登录名)并传递到服务器,服务器会查找用户配置为具有的权

  • 我正在尝试使用ServerEvents设置servicestack。我已经为ServerEventsFeature添加了插件。我正在使用Javascript服务器事件客户端,我尝试了一个简单的示例,在用户经过身份验证后在客户端上执行此操作。 在apphost文件上: 要向我正在呼叫的客户端发送事件,请执行以下操作: 我成功地在客户端上的show通知功能上接收到它。 然而,订阅服务仍然存在。disp