【问题标题】:Vertx Server Set Mutual Auth Requirement Per RouteVertx 服务器为每个路由设置相互验证要求
【发布时间】:2021-03-10 08:45:34
【问题描述】:

我有一个基于 Vertx (3.9.x) 的 HTTP 服务器,我需要在其中满足两组请求路径。第一个路径总是需要客户端证书 (ClientAuth.REQUIRED),而另一个路径是可选的客户端证书(ClientAuth.REQUESTClientAuth.NONE)。

如我所见,唯一可以设置ClientAuth的地方是HttpServerOptions,它绑定到特定端口,示例代码sn-p如下:

final HttpServerOptions options = new HttpServerOptions()
        .setPort(443)
        .setClientAuth(ClientAuth.REQUIRED) // One option per listening port.
        // Set all other server options

路由器的配置有点像下面:

final Router router = Router.router(vertx);
router.route("/required-client-cert/").handler(this::handleMutualAuth);
router.route("/no-need-client-cert/").handler(this::handleRegularAuth);

// Any one of the above routes can work anytime, because ClientAuth is configured in server options.

是否可以在单个 Vertx 应用程序中处理此问题?如果是,怎么做?

在单端口监听时有什么替代方法吗?

谢谢。

【问题讨论】:

    标签: java vert.x mutual-authentication vertxoptions


    【解决方案1】:

    经过更多研究,我最终得到了this post 中的建议。简而言之,“我无法根据 URL 的路径更改 SSL 配置,因为它只有在建立 SSL 连接后才可用”。

    解决方案是,我可以在开始时为需要客户端证书(相互身份验证)的路径设置另一个处理程序并在那里验证客户端证书,如下所示:

    router.route("/required-client-cert/")
              .handler(clientCertHandler::validateClientCert)
              .handler(this::handleMutualAuth);
    

    PS:另一种方法是配置不同的端口来侦听需要相互身份验证的请求。但是,在我的情况下,配置另一个端口不是一种选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-17
      • 1970-01-01
      • 2019-03-18
      • 2017-10-17
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      相关资源
      最近更新 更多