如何访问x509主题



我们有以下配置:

  1. Apache 2.2反向代理,终止SSL卸载的HTTPS。
  2. JBOSS 6.1 EAP应用程序服务器展示SOAP服务

apache的配置如本文中所述。

肥皂服务是在无状态的bean中实现的。这样:

@WebContext( urlPattern = "/ba/test", authMethod = "BASIC", transportGuarantee = "NONE", secureWSDLAccess = false  )
@Stateless
@WebService
@SecurityDomain( "TestDomain" )
@RolesAllowed("TestRole")
public class TestSsb  {
    @WebMethod
    public String testMe(String in) {
        return "succeeded";
    }
}

已配置了"测试域"。

在当前设置中,序列号是通过专用的HTTP标头传输的,我们在JBOSS配置XML文件中使用自定义登录模块。这有效。

但是,我们希望尽可能应用标准机制。鉴于此设置并不那么古怪,因此必须有一种访问登录模块配置中X509证书信息的方法(例如,使用BaseCertloginModule)。

这里有2个问题:

  1. 该文档假定标准设置,其中SSL终止(似乎是身份验证)由JBOSS进行。
  2. 文档似乎假设该证书"所有者"用于授权,而我需要该主题。

我不确定如何继续这样做。任何帮助将不胜感激。

解决方案在开箱即用(播放后)。authmethod ="基本"必须设置为authMethod =" client-cert"。所以:

@webcontext(contextroot =" aa/url",urlpattern ="*",authmethod = " client-cert",transportguarantee =" none",securewsdlaccess = false)

接下来,您需要指定角色/安全域作为注释:

@securitydomain(" mycertwebservedomain")
@declareroles(value = {" my_role"})

通过指定DataBaseCertLoginModule。

<security-domain name="MyCertWebserviceDomain">
   <authentication>
       <login-module code="org.jboss.security.auth.spi.DatabaseCertLoginModule" flag="required">
            <module-option name="dsJndiName" value="java:jboss/datasources/DS"/>
            <module-option name="verifier" value="org.jboss.security.auth.certs.AnyCertVerifier"/>
            <module-option name="rolesQuery" value="select role_name, 'Roles' from identity_role where identity IN(select regexp_replace(?, '.*SERIALNUMBER=([0-9]*), .*','1') from dual)"/>
       </login-module>
    </authentication>
</security-domain>

从数据库中获取角色(例如my_role),并由证书中的序列号索引。

需要将协议设置为JBOSS的AJP。

现在可以从安全主体中获取身份:sessionContext.getCallePrincipal().getName()

最新更新