gpt4 book ai didi

tomcat - 仅对某些特定资源请求客户端证书身份验证

转载 作者:行者123 更新时间:2023-11-28 21:50:43 24 4
gpt4 key购买 nike

我正在 Tomcat 上部署一个网络应用程序,它最终应该成为一个提供多种服务的平台。有时我需要能够使用客户端证书对用户进行身份验证,但只有当她访问某些 servlet/url 时,才能验证证书并读取一些属性。

我得出的结论是,仅靠 Tomcat 和 jsp/servlets,不可能只让 Web 应用程序的一部分请求客户端证书认证。要么是整个 tomcat 服务器每次到处请求用户证书(clientAuth true 或 want),要么是 web.xml 授权设置对这种情况没有用。

我是否可以使用框架、应用程序服务器或某些经过验证的特定架构来实现此要求?我想也许有一个单独的服务器实例专用于相互 ssl 身份验证,重定向用户和转发 session 参数,但这个选项似乎管理起来相当复杂。我敢打赌有类似的解决方案,只是想知道是否有一些引用实现、指南等...谢谢。

最佳答案

我过去曾使用客户端证书重新协商直接使用 Tomcat 完成此操作。较新版本的 Tomcat 的配置可能略有变化,但思路如下:

  • 为客户端身份验证配置您的连接器:设置其信任库参数,但使用 clientAuth="false"。这记录在 the Tomcat documentation 中:

    Set to true if you want the SSL stack to require a valid certificate chain from the client before accepting a connection. Set to want if you want the SSL stack to request a client Certificate, but not fail if one isn't presented. A false value (which is the default) will not require a certificate chain unless the client requests a resource protected by a security constraint that uses CLIENT-CERT authentication.

  • 在您的 web.xml 文件中,使用如下内容:

    <web-app>
    <display-name>My Webapp</display-name>
    <security-constraint>
    <web-resource-collection>
    <web-resource-name>App</web-resource-name>
    <url-pattern>/</url-pattern>
    </web-resource-collection>
    <auth-constraint>
    <role-name>cert</role-name>
    </auth-constraint>
    <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
    </security-constraint>

    <login-config>
    <auth-method>CLIENT-CERT</auth-method>
    </login-config>

    <security-role>
    <role-name>cert</role-name>
    </security-role>
    </web-app>

    当然,使用您需要的 URL 模式调整 web-resource-collection

关于tomcat - 仅对某些特定资源请求客户端证书身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21734661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com