我使用Weblogic 12c。每个webapp模块的weblogic客户端证书认证
我想设置客户端证书身份验证(双向SSL)。但我不想强制整个服务器的客户端证书。基本上,在我们的web应用程序中,大多数servlet应该使用常规的单向SSL(只验证服务器证书),而不需要客户端提供证书。但是对于其中一个servlet客户端来说,需要进行证书认证。
我已经使用单独的模块,其用于在需要2路SSL与web.xml部署描述符与表示login-config元素CLIENT-CERT认证类型servlet的设置类似的事情为Glassfish的。我还设置了适当的安全约束,角色和组。
但是,这似乎不适用于Weblogic。在SSL下的管理控制台中,我看到“双向客户端证书行为”,有3个可能的值:“未请求客户端证书”,“请求但未强制执行”和“请求并强制执行”。
如果我将其设置为“不要求”,客户端完全不存在任何证书(即使我有CLIENT-CERT同一个web.xml与Glassfish的工作)。设置为“请求并强制执行”不是一种选择。我也尝试设置为“请求但不强制”,但这也是不好的,因为浏览器会要求客户端证书,即使是那些不需要它们的页面(大多数),我们也不想要这样的行为。
基本上,在我看来,Weblogic的要强制执行的2路SSL整个服务器,但是这不是我们需要的,我们需要它只是一个web应用模块。是否有可能这样做?
编辑: 为了澄清,我设置了DefaultIdentityAsserter并创建了自定义的UserNameMapper来将客户端证书映射到用户名。然而问题是,如果SSL设置(如上所述)设置为“未请求”,则客户端证书根本不会呈现,因此服务器无法进行身份验证,我得到401响应。而且我不能使用其他2个SSL设置,因为那么服务器将为所有网页请求客户端证书,这不是我们想要的。
感谢您的解释。是的,这似乎比使用两台服务器更好。 – 2014-10-14 22:36:32