Java 如何信任被动式Spring安全OAuth2中的自定义证书?
由于与的一些怪癖,我需要执行“拆分地平线”交互,其中主OAuth2令牌交换指向云提供商(使用全局有效的TLS证书),用户信息查询指向使用公司CA签名的证书的内部微服务 我们使用内部证书对微服务进行通用下游API调用,通过向我们使用的WebClient提供公司根证书和中间CA证书,但当Spring Security尝试访问用户信息端点时,它使用的WebClient实例只信任普通的全局CA,因此,在登录时,我们会收到错误,表明无法找到信任根:Java 如何信任被动式Spring安全OAuth2中的自定义证书?,java,spring,spring-security,spring-security-oauth2,spring-webclient,Java,Spring,Spring Security,Spring Security Oauth2,Spring Webclient,由于与的一些怪癖,我需要执行“拆分地平线”交互,其中主OAuth2令牌交换指向云提供商(使用全局有效的TLS证书),用户信息查询指向使用公司CA签名的证书的内部微服务 我们使用内部证书对微服务进行通用下游API调用,通过向我们使用的WebClient提供公司根证书和中间CA证书,但当Spring Security尝试访问用户信息端点时,它使用的WebClient实例只信任普通的全局CA,因此,在登录时,我们会收到错误,表明无法找到信任根: sun.security.validator.Valid
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
由于允许的公司CA因环境(开发、验收、生产)而异,因此我们试图避免在CI管道中构建信任库的完整副本并添加单个证书;相反,我们希望找到一种在运行时以类似于的方式提供PEM的方法
我们如何将Spring Security配置为既信任CA的全局集合,以便它可以与公共身份提供者执行OAuth2交换,又信任我们的公司CA,以便它还可以向我们的内部端点发出用户信息调用