Java 在spring boot应用程序中使用cloudfoundry API时如何进行身份验证
我想在一个简单的spring启动应用程序中使用cloudfoundry API() 下面是一个为它实现java客户机的文档。() My pom.xml->Java 在spring boot应用程序中使用cloudfoundry API时如何进行身份验证,java,spring-boot,cloud-foundry,Java,Spring Boot,Cloud Foundry,我想在一个简单的spring启动应用程序中使用cloudfoundry API() 下面是一个为它实现java客户机的文档。() My pom.xml-> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.cloudfoundry/cloudfoundry-client-lib -->
<dependency>
<groupId>org.cloudfoundry</groupId>
<artifactId>cloudfoundry-client-lib</artifactId>
<version>1.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.cloudfoundry</groupId>
<artifactId>cloudfoundry-client-reactor</artifactId>
<version>2.20.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.cloudfoundry</groupId>
<artifactId>cloudfoundry-operations</artifactId>
<version>2.20.0.RELEASE</version>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
<version>3.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>io.projectreactor.ipc</groupId>
<artifactId>reactor-netty</artifactId>
<version>0.7.0.RELEASE</version>
</dependency>
我在日志中注意到,当我添加了cloudfoundry客户端库依赖项时,就会形成一个过滤器链
2017-11-09 11:34:38.086 INFO 8648 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: OrRequestMatcher [requestMatchers=[Ant [pattern='/**']]],
[org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@288ca5f0,
org.springframework.security.web.context.SecurityContextPersistenceFilter@2ba5aa7a, org.springframework.security.web.header.HeaderWriterFilter@4207609e,
org.springframework.security.web.authentication.logout.LogoutFilter@2c7a8af2,
org.springframework.security.web.authentication.www.BasicAuthenticationFilter@21c815e4, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@22e5f96e,
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@5b22d8a1,
org.springframework.security.web.authentication.AnonymousAuthenticationFilter@4068102e,
org.springframework.security.web.session.SessionManagementFilter@67b100fe,
org.springframework.security.web.access.ExceptionTranslationFilter@704641e3,
org.springframework.security.web.access.intercept.FilterSecurityInterceptor@7efd28bd]
使用cloudfoundry lib时如何处理身份验证,或者如何绕过过滤器链安全
解决方案:CF Java Client v2与v1有不同的API,因此您不会在v2中找到CloudCredentials
。有关构造新客户端和提供凭据的示例,请参见v2README
:同样,只使用v2库,不要在同一应用程序中使用任何v1库
我不确定这个错误到底是从哪里来的,但您在同一个应用程序中混合了不同主要版本的CF Java客户端。这不太可能奏效。请参阅项目页面以了解,并仅使用所有org.cloudfoundry
依赖项的2.x.x
版本。所有的org.cloudfoundry
依赖项也应该在相同的版本上
因此,请替换:
<dependency>
<groupId>org.cloudfoundry</groupId>
<artifactId>cloudfoundry-client-lib</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.cloudfoundry</groupId>
<artifactId>cloudfoundry-client-reactor</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.cloudfoundry</groupId>
<artifactId>cloudfoundry-operations</artifactId>
<version>2.20.0.RELEASE</version>
</dependency>
org.cloudfoundry
cloudfoundry客户端库
1.1.1
org.cloudfoundry
cloudfoundry客户端反应堆
2.0.1.1发布
org.cloudfoundry
cloudfoundry运营
2.20.0.1发布
与
org.cloudfoundry
cloudfoundry客户端反应堆
2.20.0.1发布
org.cloudfoundry
cloudfoundry运营
2.20.0.1发布
我也试过了。当我有cloudfoundry客户端库
依赖项时,问题就出现了!一旦进入,当服务器启动并且到达终点时,就会触发筛选器链,身份验证失败。为什么要尝试将cloudfoundry客户端lib
与其他CF Java客户端依赖项一起使用?您不需要该库。即使我认为它不是必需的,但是CloudCredentials
仅在cloudfoundry客户端库中可用,其他依赖项都无法在编译时解析。CF Java客户端v2与v1有不同的API,因此您在v2中找不到CloudCredentials
。有关构造新客户端和提供凭据的示例,请参阅v2自述文件:。同样,只使用v2库,不要在同一个应用程序中使用任何v1库。如果您只需要使用几个简单的API调用,您可以使用RestTemplate
对CF API进行REST调用,但您需要使用OAuth2凭据配置RestTemplate
。这可能看起来像这样(完全未测试,可能不完整)的代码片段:。
<dependency>
<groupId>org.cloudfoundry</groupId>
<artifactId>cloudfoundry-client-lib</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.cloudfoundry</groupId>
<artifactId>cloudfoundry-client-reactor</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.cloudfoundry</groupId>
<artifactId>cloudfoundry-operations</artifactId>
<version>2.20.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.cloudfoundry</groupId>
<artifactId>cloudfoundry-client-reactor</artifactId>
<version>2.20.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.cloudfoundry</groupId>
<artifactId>cloudfoundry-operations</artifactId>
<version>2.20.0.RELEASE</version>
</dependency>