我们目前正在为我们的webapp使用基于证书的登录(运行Jetty 7.4)
使用JSSLUtils,我配置了一个基本上检查证书的自定义org.jsslutils.sslcontext.X509SSLContextFactory
,根据后端验证它,并检查与此证书关联的用户是否有权使用特定的servlet。
这很好用,唯一的问题是,如果用户未经授权或证书不再有效等,我所能做的就是
throw new CertificateException("Not allowed to access ....");
现在的问题是,我可以在某处/某种程度上在服务器端拦截此错误并发回一个用户友好页面,其中包含一些文本,指出为什么会失败?我目前得到的只是SSL错误的默认浏览器页面,例如在Chrome
中错误107(net :: ERR_SSL_PROTOCOL_ERROR):SSL协议错误。
我尝试为我们的servletholder指定一个ErrorHandler
(在spring配置文件中),但它没有被调用,因为它似乎在堆栈中“更高”。
有什么建议吗?
谢谢, 乔伊