无法从客户端x509证书中检索主体

时间:2013-11-06 13:38:10

标签: java spring ssl spring-security x509

我在我的Web应用程序中使用Spring安全性,并使用x509证书进行身份验证。

<x509 subject-principal-regex="CN=[^,]* ([^,]*),.*$" user-service- ref="MyAuthService"  />

一切正常,我可以检索我的主体并在我的Java类中获取它。 当环境中存在基础架构级别更改(服务器迁移和安全性更改等)时,我的麻烦就开始了。我无法再检索此信息。 我想要做的是调试我从x509证书获得的标题/主题,以便查看是否需要更改正则表达式来检索主体。 但我不知道如何在春季安全中做到这一点。如何在应用程序级别从x509证书中记录完整的标题/主题。我正在使用spring security 3.1

1 个答案:

答案 0 :(得分:0)

如果您希望在处理证书时查看证书的更多详细信息,则值得注意的是,实现这些过滤器的Spring代码确实实现了调试日志记录。例如,X509AuthenticationFilter在X509Certificate对象上记录toString()的结果:

logger.debug("X.509 client authentication certificate:" + certs[0]);

同样,SubjectDnX509PrincipalExtractor记录它从证书中提取的subjectDN及其确定的用户名。

鉴于这种情况,如果您使用的是Log4J,则可以通过将以下内容放入log4j.xml配置文件中来获取日志文件中的这些内容。

<logger name="org.springframework.security.web.authentication.preauth.x509">
    <level value="debug" />
</logger>

其他日志记录框架将具有类似的机制,用于启用特定类或包的调试日志记录。