gpt4 book ai didi

ssl - Jboss 应用程序策略在具有 PBESecurityDomain 的相互/客户端证书身份验证中被忽略

转载 作者:太空宇宙 更新时间:2023-11-03 15:07:07 28 4
gpt4 key购买 nike

通过以下相互客户端证书,SSL (TLS) 握手适用于休息端点(耶!)- 通过测试和调试验证:javax.net 日志记录和 wireshark。但是……

第一个观察:HTTPServletRequest 和 JAX-RS 注释的 SecurityContext 具有空主体信息

第二个观察:篡改包含应用程序策略元素的 login-config.xml 没有效果

简而言之,TLS 可以工作,但是将证书 DN 传输到请求线程中的 HTTPServletRequest 对象不会阻止应用程序获取调用者的 ID。有人有什么建议吗?

在 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>

部署/安全服务.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>

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>

最佳答案

将特殊的 ClientLoginModule 添加到 login-context.xml 以修复 null principal 问题。

<login-module code="org.jboss.security.ClientLoginModule" flag="required"></login-module>

关于ssl - Jboss 应用程序策略在具有 PBESecurityDomain 的相互/客户端证书身份验证中被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4693640/

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