我们目前正在使用 Spring x509 支持 client-auth。应用服务器是 JBoss,其中已设置了 verify-client="want"。
但是我观察到,一旦我将 x509 元素添加到 spring 配置文件中,它将尝试为每个 http 请求加载数字证书。但是我不希望它为登录页面这样做。除非用户单击登录页面上的特定按钮(例如“使用证书登录”),否则我不希望加载和使用证书。
有没有办法排除任何特定的 URL?或者一旦你在 Spring 配置元素中有一个 x509 元素,它会尝试为每个 http 请求加载证书?
这是我的弹簧配置的一部分:
<security:http create-session="always">
<x509 subject-principal-regex="CN=(.*?)," user-service-ref="myUserDetailsService" />
<intercept-url pattern= ..... // not relevant to this question
<intercept-url pattern= ..... // not relevant to this question
<security:form-login
login-page="myLoginPage"
authentication-failure-url="/myErrorPage"
default-target-url="/mySuccessPage"
always-use-default-target="true"/>
</security:http>
此外,如果不在 Spring 中,是否有办法在 JBOSS 上指定排除 URL:
这是在 JBOSS Standalone.xml 中配置的元素
<connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true">
<ssl name="ssl" key-alias="alias" certificate-key-file="keystore" verify-client="want" ca-certificate-file="truststore"/>
</connector>