JBoss Application-política ignorado en / autenticación mutua cliente-cert con PBESecurityDomain
-
11-10-2019 - |
Pregunta
Con el siguiente, certificado de cliente mutua, SSL (TLS) Trabajos de toma de contacto para un punto final de reposo (! Yay) - validó a través de pruebas y depuración: javax.net TALA Y Wireshark. Pero ...
primera observación: HTTPServletRequest y JAX-RS anotada SecurityContext tiene nula información principal
segunda observación: La manipulación de la entrada-config.xml, que contiene elementos de aplicación de política, no tiene ningún efecto
En resumen, TLS funciona, pero la transferencia de la cert DN al objeto HTTPServletRequest en la solicitud hilo no impedir la aplicación de recoger el ID de la persona que llama. ¿Alguien tiene algún consejo?
En JBoss 6:
deploy / jbossweb.sar / server.xml:
<Connector protocol="HTTP/1.1" debug="10"
SSLEnabled="true"
...
secure="true"
clientAuth="true"
sslProtocol = "TLS"
securityDomain="java:/jaas/mydomain"
SSLImplementation="org.jboss.net.ssl.JBossImplementation" />
deploy / jbossweb.sar / META-INF / jboss-beans.xml:
<depends>jboss.security:service=PBESecurityDomain</depends>
deploy / seguridad service.xml:
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.security.plugins.JaasSecurityDomain"
name="jboss.security:service=PBESecurityDomain">
<constructor> <arg type="java.lang.String" value="mydomain"/>
</constructor>
<attribute name="KeyStoreURL">${jboss.server.home.dir}/mykeystore.jks</attribute>
<attribute name="KeyStorePass">{CLASS}org.jboss.security.plugins.FilePassword:${jboss.server.home.dir}/mykeystorepass.pbe</attribute>
<attribute name="TrustStoreURL">${jboss.server.home.dir}/mytruststore.jks</attribute>
<attribute name="TrustStorePass">password</attribute>
<attribute name="Salt">abunchofrandomchars</attribute>
<attribute name="IterationCount">13</attribute>
<depends>jboss.security:service=JaasSecurityManager</depends>
</mbean>
</server>
deploy / seguridad / seguridad jboss- beans.xml:
<bean name="XMLLoginConfig" class="org.jboss.security.auth.login.XMLLoginConfig">
<property name="configResource">login-config.xml</property>
</bean>
<bean name="SecurityConfig" class="org.jboss.security.plugins.SecurityConfig">
<property name="mbeanServer"><inject bean="JMXKernel" property="mbeanServer"/></property>
<property name="defaultLoginConfig"><inject bean="XMLLoginConfig"/></property>
</bean>
conf / login-config.xml:
<application-policy name="mydomain">
<authentication>
<login-module code="org.jboss.security.auth.spi.BaseCertLoginModule"
flag = "required">
<module-option name="password-stacking">useFirstPass</module-option>
<module-option name="securityDomain">java:/jaas/mydomain</module-option>
<module-option name="verifier">org.jboss.security.auth.certs.AnyCertVerifier</module-option>
<module-option name="principalClass">org.jboss.security.auth.certs.SubjectDNMapping</module-option>
</login-module>
<login-module code="org.jboss.security.auth.spi.UserRolesLoginModu"
flag = "required">
<module-option name="password-stacking">useFirstPass</module-option>
<module-option name="usersProperties">users.properties</module-option>
<module-option name="rolesProperties">roles.properties</module-option>
</login-module>
</authentication>
</application-policy>
war / WEB-INF / jboss-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC
"-//JBoss//DTD Web Application 2.4//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_4_0.dtd">
<jboss-web>
<security-domain>java:/jaas/mydomain</security-domain>
<context-root>/myapp</context-root>
</jboss-web>
No hay solución correcta
Otros consejos
Agregue el ClientLoginModule
especial para entrada-context.xml para solucionar el problema principal de nulo.
<login-module code="org.jboss.security.ClientLoginModule" flag="required"></login-module>