这是场景。我有一个使用 X.509 证书从 Eclipse RCP 客户端连接到使用 SSL 的 WAR。在我验证我拥有证书后,我想检索用户详细信息(即实现 loadUserByUsername)并从请求标头(由客户端提供)中读取 userId,而不是使用证书中提供的 DN。这可能吗?本质上,我相信调用者会向我提供我应该在 Spring 安全上下文中使用的 userId。我的 Spring 配置目前看起来像这样,适用于从 X.509 证书中提取 DN 并加载用户的标准情况。
<security:http>
<security:intercept-url pattern="/**" requires-channel="https" />
<security:x509 subject-principal-regex="^(.*?)$" />
</security:http>
<security:authentication-manager>
<security:authentication-provider user-service-ref="myUserDetailsService" />
</security:authentication-manager>
我需要它来支持 PKI 客户端 (user1) -> PKI 服务 A -> PKI 服务 B(以 user1 身份运行服务 B)的场景。*