gpt4 book ai didi

security - 将客户端证书的 DN 传递给 Tomcat 中已部署的应用程序

转载 作者:行者123 更新时间:2023-11-28 22:47:36 24 4
gpt4 key购买 nike

我通过在 conf/server.xml 文件中设置 clientAuth="true" 将 Tomcat 配置为需要通过 TLS 进行相互身份验证:

<Connector 
port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="conf/server.p12"
keystorePass="1t3TcUQY*2j^"
truststoreFile="conf/cacerts"
truststorePass="fx!eAKQO2^0c"
clientAuth="true"
sslProtocol="TLS"
sslEnabledProtocols="TLSv1.2">
</Connector>

一切正常,Tomcat 只接受具有有效证书的客户端。

问题是部署在 Tomcat 中的 Web 应用不知道客户端的身份。我所说的身份是指出现在客户端证书中的主题信息,例如其专有名称 (DN)。因此,Web 应用无法根据客户端的身份做出访问控制决策。

Tomcat 是否有办法在身份验证成功后将此信息传递给已部署的应用程序?

最佳答案

  1. 客户端证书可通过 request.getAttribute("javax.servlet.request.X509Certificate") 作为证书数组访问。阅读 Servlet 规范 作为官方引用。在 Servlet 4.0 规范中,第 3.10 章SSL 属性

  2. 如果您的应用程序配置了 login-config/auth-method of CLIENT-CERT,则 Tomcat 中的 Authenticator 将执行客户端证书的身份验证。实际处理委托(delegate)给领域。

    如果身份验证成功,将从证书中提取用户名并创建 java.security.Principal。用户名的提取可使用 Realm 的属性 X509UsernameRetrieverClassName 进行配置。参见 Realm configuration reference .

    (供引用,在 Tomcat 9 中:org.apache.catalina.authenticator.SSLAuthenticator.doAuthenticate (), org.apache.catalina.realm.RealmBase.authenticate (X509Certificate[]))

关于security - 将客户端证书的 DN 传递给 Tomcat 中已部署的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53332497/

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