- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Spring OAuth2RestTemplate
来访问 REST 服务。我需要更改我的代码使用 Eureka 进行服务发现。所有通信都必须是 HTTPS
并且我在客户端有一个 truststore
,其中包含用于验证 REST 服务的服务器证书的证书,OAuth Server
和 Eureka 服务器
。我没有使用 JDK truststore
。
对于 REST 服务和 OAuth
服务器访问,我设法提供了一个 ClientHttpRequestFactory
来处理 SSL
并使用我本地 的证书>truststore
用于certchain
验证如下:
@Bean
public ClientHttpRequestFactory requestFactory(final KeyStore trustStore)
throws NoSuchAlgorithmException, KeyStoreException,
KeyManagementException {
SSLConnectionSocketFactory socketFactory
= new SSLConnectionSocketFactory(
SSLContexts.custom().loadTrustMaterial(
trustStore,
(x509Certificates, s) -> false).build(),
NoopHostnameVerifier.INSTANCE);
HttpClient httpClient = HttpClients.custom()
.setSSLSocketFactory(socketFactory)
.build();
return new HttpComponentsClientHttpRequestFactory(httpClient);
}
@LoadBalanced
@Bean
public OAuth2RestTemplate oauth2RestTemplate(
final ClientHttpRequestFactory requestFactory) {
ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails();
resourceDetails.setAccessTokenUri(env.getProperty(ACCESS_TOKEN_URI_PROPERTY));
resourceDetails.setClientId(env.getProperty(CLIENT_ID_PROPERTY));
resourceDetails.setClientSecret(env.getProperty(CLIENT_SECRET_PROPERTY));
resourceDetails.setGrantType(env.getProperty(CLIENT_GRANTTYPE_PROPERTY));
OAuth2RestTemplate result = new OAuth2RestTemplate(resourceDetails);
result.setRequestFactory(requestFactory);
ClientCredentialsAccessTokenProvider accessTokenProvider = new ClientCredentialsAccessTokenProvider();
accessTokenProvider.setRequestFactory(requestFactory);
result.setAccessTokenProvider(accessTokenProvider);
return result;
}
我的配置使用@EnableDiscoveryClient 注释,因此当我在我的代码中的某处@Autowire OAuth2RestTemplate 时,我可以使用该服务的 eureka 名称。
不幸的是,Eureka
服务查找失败 - 说明无法验证证书路径。
谁能告诉我,如何设置一个 spring @Configuration @Bean
将我的 ClientRequestHttpFactory
注入(inject) spring eureka 客户端
使用的 jersey 客户端
?
我不允许将证书链放入 JDK/JRE
默认 truststore
。
最佳答案
我发现spring cloud不止一处不允许自定义SSL调用。我们通过实现 ApplicationStartingEvent
并使用它来加载我们自己的信任库来绕过它,我们从中为正在运行的 JVM 创建默认的 SSL 上下文。
缺点是你没有这么早的任何 Spring 支持。还有其他方法可以提前进入,例如 spring.factories
bootstrap context injection,但您可能会发现,越晚进入,spring cloud 就越有可能已经尝试连接到 Eureka。
关于java - 为 Spring DiscoveryClient 配置 SSLContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50332172/
我正在使用 Spring 靴 1.3.3 org.springframework.boot spring-boot-starter-parent 1.3.3.RELEASE
我创建了 带有复制功能的 Eureka 服务器 现在尝试启动客户端。当我尝试启动 spring-microservices-eureka-client 时,我收到以下错误。使用 Spring Boot
当我通过浏览器调用该方法本身时,它正在工作,并且我得到了预期的 JSON。因此该方法正在运行并且所请求的服务已注册。 @RequestMapping("/getArticle/{article
我已经设置了 Intershop Commerce Management 7.8 并且一切正常,除了我在错误日志文件中不断出现错误。 Eureka 正在运行,我可以使用 http://localhos
我正在使用 Spring OAuth2RestTemplate 来访问 REST 服务。我需要更改我的代码使用 Eureka 进行服务发现。所有通信都必须是 HTTPS 并且我在客户端有一个 trus
尝试访问发现客户端以访问其他端点并跟随, http://docs.identityserver.io/en/aspnetcore1/endpoints/discovery.html 在 .Net 7.
pom.xml 出现问题。除了 spring-cloud-starter-netflix-eureka-client 之外,所有依赖项都得到了很好的解决。我做错了什么?请帮忙。 Maven 版本 4.
如标题所示:控制台应用程序在执行以下行时崩溃 disco = await DiscoveryClient.GetAsync("http://localhost:5000"); 没有异常抛出,即使我把它
我正在尝试构建自己的 DiscoveryClient ,它将使用 Docker Swarm 作为服务源。我已经让它与 Spring Cloud Gateway 和 Spring Cloud Loadb
2017-03-16 16:09:08.821 INFO 9104 --- [ main] com.hello.EurekaClientApplication :
我正在尝试将使用 spring-cloud-starter-netflix-zuul 的网关迁移到 Spring Cloud Gateway,但我遇到了请求路由问题。 我浏览了以下有关为 Discov
我从Spring blog借用了下面的代码在这里。 @SpringBootApplication @EnableEurekaClient @EnableFeignClients public clas
DiscoveryClient 还需要什么?我正在尝试使用 DiscoveryClient 将已注册的服务提取到 Eureka 。独立程序运行良好,但以下代码片段将与在 JBoss 上运行的 Web
我们的 Web 应用程序托管在一个 SSL 终止集群后面。我调用 DiscoveryClient.GetAsync var discoveryClient = DiscoveryClient.GetA
我是一名优秀的程序员,十分优秀!