gpt4 book ai didi

tomcat - 使用 CLIENT-CERT 保护 tomcat 8.5 中的 Web 资源

转载 作者:行者123 更新时间:2023-11-28 22:40:33 25 4
gpt4 key购买 nike

我是 tomcat 的新手,我使用 tomcat 8.5 使用 Spring 框架编写了一些 web 服务。我想使用身份验证类型 CLIENT-CERT 保护特定的 Web 资源。我已将 server.xml 配置为

        <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="<path>/TestServerp12.pfx"
truststoreFile="<path>/truststore.jks"
truststorePass="****"
keystoreType="PKCS12"
truststoreType="JKS"
keystorePass="******" />

在 web.xml 中添加

    <security-constraint>
<web-resource-collection>
<web-resource-name>App</web-resource-name>
<url-pattern>/authenticate/*</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>

我关注了一些像 https://twoguysarguing.wordpress.com/2009/11/03/mutual-authentication-with-client-cert-tomcat-6-and-httpclient/ 这样的博客。和关于它的计算器问题。

使用上面的配置, protected URL 抛出 403,所以我必须在 web.xml 中添加安全角色

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

and below in tomcat users

<role rolename="cert"/>
<user username="EMAILADDRESS=testclient3@email.com, CN=TestClient3, OU=Test, O=MyO, L=TestL, ST=TestST, C=LA" password="null" roles="cert"/>

添加后,它的 SSL 握手成功,但用户名(客户端证书的可分辨名称)被硬编码,这实际上意味着其他用户将无法访问它。

有什么方法可以在不对用户进行硬编码的情况下在 tomcat 中启用 CLIENT-CERT 身份验证?

最佳答案

您可以在没有任何外部实用程序的情况下执行此操作。从你的问题中并不清楚你到底想做什么。您真正想要做的是将所有用户视为一个单独的组,而不必明确地将每个用户置于该角色中(例如使用用户数据库)。

这可以使用 Tomcat 的 allRolesMode 来完成您可以在 Realm section of the Tomcat users guide 中阅读.

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
allRolesMode="authOnly"
resourceName="UserDatabase" />

现在在您的 WEB-INF/web.xml 中,您将设置 <security-constraint>要求“任何角色”:

<security-constraint>
<web-resource-collection>
<web-resource-name>My Secure Area</web-resource-name>
<url-pattern>/secure</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>

此技术适用于所有当前支持的 Apache Tomcat 版本 (6.0 - 9.0)。

关于tomcat - 使用 CLIENT-CERT 保护 tomcat 8.5 中的 Web 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41438536/

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