Политика приложения Jboss игнорируется во взаимной / клиентской аутентификации с помощью PBESecurityDomain

Благодаря следующему взаимному сертификату клиента, квитирование SSL (TLS) работает для конечной точки отдыха (ура!) - проверяется посредством тестирования и отладки: ведение журнала javax.net и wirehark. Но...

1-е наблюдение: HTTPServletRequest и JAX-RS аннотированный SecurityContext имеет нулевую информацию о принципале

2-е наблюдение: вмешательство в файл login-config.xml, содержащий элементы политики приложения, не имеет никакого эффекта.

Короче говоря, TLS работает, но передача DN сертификата объекту HTTPServletRequest в потоке запроса не препятствует получению приложением идентификатора вызывающего абонента. Есть ли у кого-нибудь совет?

На JBoss 6:

развернуть / 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" />

развернуть / jbossweb.sar / META-INF / jboss-beans.xml:

<depends>jboss.security:service=PBESecurityDomain</depends>

развернуть / 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>

развернуть / безопасность / безопасность-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>

война / 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>

person yomama    schedule 14.01.2011    source источник


Ответы (1)


Добавьте специальный ClientLoginModule в login-context.xml, чтобы исправить проблему с нулевым принципалом.

<login-module code="org.jboss.security.ClientLoginModule" flag="required"></login-module>
person Justin Cranford    schedule 10.05.2011