gpt4 book ai didi

apache - 如何在 JBOSS 6 EAP icm AJP 和 SSL 卸载中访问 X509 subject.serialnumber

转载 作者:太空宇宙 更新时间:2023-11-03 14:55:13 25 4
gpt4 key购买 nike

我们有以下配置:

  1. Apache 2.2 反向代理,终止 HTTPS 以进行 SSL 卸载。
  2. 公开 SOAP 服务的 Jboss 6.1 EAP 应用服务器

Apache 的配置如 this 中所述。文章。

SOAP 服务在无状态 session 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";
}

}

已配置“TestDomain”。

在当前设置中,序列号通过专用 HTTP header 传输,我们在 JBOSS 配置 xml 文件中使用自定义登录模块。这行得通。

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

这里有两个问题:

  1. documentation假设采用标准设置,其中 SSL 终止(似乎是身份验证)也由 JBOSS 执行。
  2. documentation似乎假设该证书“所有者”用于授权,而我需要 subject.serialnumber 并为其分配“TestRole”。

我不确定如何继续此操作。任何帮助将不胜感激。

最佳答案

该解决方案开箱即用(经过一番尝试)。 authMethod = "BASIC"必须设置为 authMethod = "CLIENT-CERT"。所以:

@WebContext( contextRoot = "aa/url", urlPattern = "*", authMethod = "CLIENT-CERT", transportGuarantee = "NONE", secureWSDLAccess = false )

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

@SecurityDomain( "MyCertWebserviceDomain" )
@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中设置协议(protocol)为AJP。

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

关于apache - 如何在 JBOSS 6 EAP icm AJP 和 SSL 卸载中访问 X509 subject.serialnumber,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30082509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com