在不指定用户名的情况下对Tomcat使用CLIENT-CERT

我正在尝试使Tomcat Web应用程序使用客户端证书身份验证进行传入连接。在server.xml中使用clientAuth =

true时,一切工作正常,但是由于在同一服务器上运行的其他应用程序,我们不能在生产环境中使用它。

有没有一种方法可以形成web.xml文档,从而以与clientAuth = true相同的方式强制应用程序使用客户端证书?似乎使用CLIENT-

CERT设置还要求您为要访问系统的每个证书设置一个tomcat用户帐户?我们需要能够允许来自特定CA(在服务器信任库中设置)的所有证书,其中主题与某些规则匹配(在实际应用程序中检查)。我希望以下类似的方法能够奏效,但是还没有运气!

<security-constraint>

<web-resource-collection>

<web-resource-name>Everything</web-resource-name>

<url-pattern>/*</url-pattern>

</web-resource-collection>

<user-data-constraint>

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

</user-data-constraint>

</security-constraint>

<login-config>

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

</login-config>

回答:

首先,听起来像是您想要的,clientAuth=want而不是clientAuth=true:它将允许客户端提供证书,但并非绝对需要证书。

当您使用任何形式的身份验证时,Tomcat(或与此相关的任何servlet容器)必须能够从中构建一个Principal对象-

具有名称(通常是用户名)的对象。然后,容器必须决定用户具有什么角色才能正确 授权 特定请求。因此,Tomcat将需要事先了解用户才能使授权工作。

另一方面,如果不需要任何授权,则可以设置clientAuth=want然后使用Filter来验证证书。CLIENT-

CERT如果您已经在进行自己的检查,则无需使用身份验证。

以上是 在不指定用户名的情况下对Tomcat使用CLIENT-CERT 的全部内容, 来源链接: utcz.com/qa/416070.html

回到顶部