Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在spring boot应用程序中使用cloudfoundry API时如何进行身份验证_Java_Spring Boot_Cloud Foundry - Fatal编程技术网

Java 在spring boot应用程序中使用cloudfoundry API时如何进行身份验证

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> <!--

我想在一个简单的spring启动应用程序中使用cloudfoundry API()

下面是一个为它实现java客户机的文档。()

My pom.xml->

<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
。有关构造新客户端和提供凭据的示例,请参见v2
README
:同样,只使用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>