我的要求是使用x509客户端证书而不是用户名和密码进行身份验证。我的应用程序中有两种身份验证模式。
通过从HTTPrequest获取证书,只需验证其中一个tomcat过滤器中的证书,就可以在本地模式下对证书进行身份验证
X509Certificate clientCertChains[] = (X509Certificate[]) request
.getAttribute("javax.servlet.request.X509Certificate");
对于外部身份验证,我需要使用EAP_TLS协议将接收到的证书发送到外部服务器。为了实现这一点,我需要给定x509证书的apache以下信息。
TLS certificate, ( This is available in httpRequest)
TLS client_key_exchange,
TLS certificate_verify,
TLS change_cipher_spec,
TLS finished
我的实际工作流程如下:
浏览器-> x509证书-> Tomcat(春季)-> X509证书(EAP -TLS)-> Radius服务器
当x509证书放置在服务器中时,我能够使用EAP_TLS来通信Radius。
X509Certificate clientCertChains[] = (X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate");