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

标签 java spring ssl spring-security x509

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

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

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

最佳答案

如果您希望在处理证书时查看更多详细信息,请注意实现这些过滤器的 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>

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

关于java - 无法从客户端 x509 证书中检索主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19813567/

相关文章:

Spring REST DELETE 示例错误

java - Spring Boot - 不明确的映射

ssl - 替换 SSL 证书后启动 WAMP 图标时出现 WAMP 错误为橙色

java - String、StringBuffer 和 StringBuilder

java - 在 JFreeChart 中显示值和系列名称

java - c++ 服务器 htons 到 java ntohs 客户端转换

spring - 如何使用 spring 缓 stub 据主键缓存整体列表

java - 如何在 JSF 中设置 HtmlOutputTag 的值?

ssl - apache 2.4.25 密码强度问题

java - Android Studio/Intellij,Gradle 错误 :Cause: peer not authenticated