Jboss application-policy ignoriert in gegenseitigem / client-cert Auth mit PBESecurityDomain
-
11-10-2019 - |
Frage
Mit dem folgenden gegenseitigen Client-Zertifikat, SSL (TLS) Handshake arbeitet für einen Rest Endpunkt (! Yay) - validiert über das Testen und Debuggen: javax.net Protokollierung & wireshark. Aber ...
1. Beobachtung: HttpServletRequest und JAX-RS kommentierten Security hat null Hauptinfo
2. Beobachtung: Verfälschung mit dem Login-config.xml, mit anwendungsPolitikElemente, hat keine Auswirkung
Kurz gesagt, arbeitet TLS aber die Übertragung des cert DN zum HttpServletRequest Objekt im Anforderungsthread verhindert nicht die Anwendung von der Kommissionierung bis auf die ID des Anrufers. Hat jemand einen Rat?
Auf 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 / security-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 / Sicherheit / security-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>
Krieg / 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>
Keine korrekte Lösung
Andere Tipps
Fügen Sie den speziellen ClientLoginModule
zu Login-context.xml das Nullhaupt Problem zu beheben.
<login-module code="org.jboss.security.ClientLoginModule" flag="required"></login-module>