JBOSS 7有两个上下文。 一个使用SSL Mutual Auth,另一个只使用SSL
我们在配置JBoss时遇到问题。 我们正在配置它,以便可以同时使用Mutual auth并且不使用它。 喜欢:
https://example.com/contextA/ (需要SSL相互身份validation) https://example.com/contextB/ (只需SSL)
可能吗?
我能做的是使JBoss或所有JBoss使用SSL相互认证或不使用。 如何将其配置为同时进行?
我的contextA web.xml:
ContextA services /* GET * CONFIDENTIAL CLIENT-CERT
我的contextA jboss-web.xml
RequireCertificateDomain
ContextB web.xml
ContextB *.jsp true 10 true index.jsp SecureApplicationConstraint ContextB Auth applications are secured /login/* Only Users with roles are allowed USER CONFIDENTIAL SecureChannelConstraint Entire site is protected through SSL /contextB/* Require encrypted channel CONFIDENTIAL FORM ContextBPolicy /login.jsp /loginError.jsp USER
ContextB jboss-web.xml
java:/jaas/ContextBPolicy
standalone.xml的内容
(...) (...)
在我看来,基于http端点不可能做到这一点。
原因是在客户端将http请求发送到服务器之前发生SSL / TLS握手。
端点(例如/contextA
)驻留在该http请求中!
在SSL / TLS握手开始时,只有主机名(例如example.com
)可用(并且仅当客户端启用了SNI时)。
所以你需要2个不同的主机名。 例如contexta.example.com
和contextb.example.com
有可能,因为您要为不同的Web应用程序配置不同类型的身份validation。
请修改want
verify-client
的值:
添加
根据与verify-client
属性相关的JBoss文档: http : //docs.jboss.org/jbossweb/7.0.x/config/ssl.html
如果希望SSL堆栈在接受连接之前需要来自客户端的有效证书链,请设置为"true"
。 如果希望SSL堆栈请求客户端证书,则设置为"want"
,但如果未显示,则不会失败。
如果verify-client=”true”
JBoss需要证书是正确的。 但是,如果您在verify-client="want"
时访问证书,JBOSS应该要求客户端证书。 如果兄弟包含客户端证书并且应用程序受客户端证书身份validation(web.xml中的CLIENT-CERT)保护,则应该成功。
您可以通过定义需要证书的领域来执行此操作:
然后将WebApplication放入该领域:
在WEB-INF / web.xml中:
CLIENT-CERT CertRequiredRealm
- 使用JNDI / Java中的当前用户在LDAP上进行身份validation
- 如何在SNMP4J中使用非对称密钥或证书身份validation?
- 泽西岛 – 要求进行身份validation
- 如何正确地向服务器validationAngularJS客户端
- 如何使用Spring Security提供多种身份validation方式
- 即使在SpringMVC中包含密钥库证书后,也无法对服务器进行身份validation
- 使用Spring Security在运行时切换身份validation方法?
- Spring Security将URL参数传递给Authentication Provider
- JDBC中缺少dll