【问题标题】:Spring Boot: Disable Client Auth for specific URLSpring Boot:禁用特定 URL 的客户端身份验证
【发布时间】:2018-06-15 11:10:26
【问题描述】:

我的application.yml 中有以下配置

server:
  #address:
  port: 8443
  sessionTimeout: 30
  ssl:
    client-auth: need
    key-store: keyStore.jks
    key-store-password: 12345
    key-password: datacert

    protocol: TLS
    trust-store: truststore.jks
    trust-store-password: 12345

由于我有 client-auth: need,我的应用程序提示为所有 URL 提供证书,无论如何我可以绕过 client auth 以获取某些特定 URL,例如 /info\health URL?

【问题讨论】:

  • 不,你不能。在包含 URL 的流被接收和解密之前,客户端身份验证在 TLS 握手级别进行评估和完成。最好将其设置为“想要”,然后检查它是否真的发生在需要它的端点中。 (提示:spring-security)

标签: java spring spring-boot


【解决方案1】:

Spring boot 不允许混合使用 http 和 https。 也不建议将 URL 与不安全的页面混合使用。

如果您只需要确保某些 URL 的安全,请实施自定义身份验证,因为默认情况下,每个请求都会发生 SSL 握手。

您可以参考这些讨论:How set up Spring Boot to run HTTPS / HTTP ports

例如,请求只有在经过身份验证后才会到达服务器。

您可以尝试使用过滤器创建和捕获请求,但我怀疑您是否会在请求被 Web 服务器验证之前在服务器上获取该请求。

例如尝试添加 java Filter 并捕获所需的 URL 以过滤安全和非安全。 (过滤器可在 web.xml 下配置或作为注释配置)。其他选择是尝试 Spring Security 过滤器链代理。

【讨论】:

    猜你喜欢
    • 2019-05-31
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 2013-07-20
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多