如何配置双向证书认证

3
我正在尝试使用WildFly 8.2进行客户端证书身份验证。我已将日志级别更改为ALL,以便能够看到来自org.jboss.security的错误信息。(注意:使用的密码仅用于演示)
下面是我的WildFly 8.2 standalone.xml配置:
<security-realm name="SSLRealm">
    <server-identities>
        <ssl protocol="TLSv1">
            <keystore path="localhost.jks" relative-to="jboss.server.config.dir" keystore-password="localhost" alias="localhost"/>
        </ssl>
    </server-identities>
    <authentication>
        <truststore path="cacerts.jks" relative-to="jboss.server.config.dir" keystore-password="localhost"/>
    </authentication>
</security-realm>

我的安全领域

<security-domain name="client-cert-policy" cache-type="default">
    <authentication>
        <login-module code="Certificate" flag="required">
            <module-option name="securityDomain" value="client-cert-policy"/>
        </login-module>
    </authentication>
    <jsse keystore-password="localhost" keystore-url="file:/${jboss.server.config.dir}/localhost.jks" truststore-password="localhost" truststore-url="file:/${jboss.server.config.dir}/cacerts.jks" client-auth="true"/>
</security-domain>

我的https监听器

<https-listener name="default-https" socket-binding="https" security-realm="SSLRealm" verify-client="REQUESTED"/>

在我的Web应用程序的web.xml文件中

<security-constraint>
    <display-name>allpages</display-name>
    <web-resource-collection>
        <web-resource-name>all-res</web-resource-name>
        <description/>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
    </auth-constraint>
    <user-data-constraint>
        <description/>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>
<login-config>
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>client-cert-policy</realm-name>
</login-config>

in jboss.xml

<context-root>/haven</context-root>
<security-domain>client-cert-policy</security-domain>

尽管如此,我的Web应用程序仍返回403错误页面。 非常感谢任何帮助。
1个回答

4

最终我成功使客户端认证工作,以下是所做的修改:

在standalone.xml中将安全域从Certificate改为CertificateRoles,并添加一个角色属性文件。

<security-domain name="client-cert-policy" cache-type="default">
    <authentication>
        <login-module code="CertificateRoles" flag="required">
            <module-option name="securityDomain" value="client-cert-policy"/>
            <module-option name="rolesProperties" value="file:${jboss.server.config.dir}/user_roles.properties"/>
            <module-option name="defaultRolesProperties" value="file:${jboss.server.config.dir}/default_roles.properties"/>
        </login-module>
    </authentication>
    <jsse keystore-password="localhost" keystore-url="file:/${jboss.server.config.dir}/localhost.jks" truststore-password="localhost" truststore-url="file:/${jboss.server.config.dir}/cacerts.jks" client-auth="true"/>
</security-domain>

修改web.xml以添加角色

<security-constraint>
    <display-name>allpages</display-name>
    <web-resource-collection>
        <web-resource-name>all-res</web-resource-name>
        <description/>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>sys_view</role-name>
    </auth-constraint>
    <user-data-constraint>
        <description/>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>
<login-config>
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>client-cert-policy</realm-name>
</login-config>
<security-role>
    <description/>
    <role-name>sys_view</role-name>
</security-role>

3
请提供文件 user_roles.properties 和 user_roles.properties,我认为这可能会在类似情况下对我有所帮助。 - Celso Marigo Jr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接