当前位置: 首页 > 知识库问答 >
问题:

Spring Cloud配置身份验证问题

翟默
2023-03-14
INFO  Fetching config from server at : http://localhost:8888
WARN  Could not locate PropertySource: Could not extract response: no suitable HttpMessageConverter found for response type [class org.springframework.cloud.config.environment.Environment] and content type [text/html;charset=UTF-8]
INFO  The following profiles are active: development

有人面对过这个问题吗?如果没有身份验证,spring-cloud-config-client可以很好地工作,但是如果启用了基本身份验证,相同的代码就不能工作了。

Spring Cloud Config Server应用程序。属性:

spring.application.name=my-config
server.port=8888
spring.cloud.config.server.git.uri=file:///repo/my-config
spring.security.user.name=root
spring.security.user.password=root

Spring Cloud Config Client bootstrap.yml:

spring.application.name=my-service
spring.profiles.active=development
spring.cloud.config.uri=http://localhost:8888
management.endpoints.web.exposure.include=*
spring.cloud.config.username=root
spring.cloud.config.password=root
<spring-boot.version>2.2.2.RELEASE</spring-boot.version>
<spring-cloud-config.version>2.2.0.RELEASE</spring-cloud-config.version>
@Value("${spring.profiles.active}")
private String activeProfile;

logger.info("Active Profile: " + activeProfile);

奇怪的是,记录器的输出是空白的,这意味着没有活动的配置文件。因此,很明显,这个bootstrap.properties配置被忽略了。为了绕过这一点,我在my-service bootup中添加了这个JVM参数。

-Dspring.profiles.active=development -Dspring.application.name=my-service

这有效地解决了配置文件未被检测到的问题。但是,我仍然不清楚为什么从bootstrap.properties中忽略spring.profiles.active=development配置。

共有1个答案

桑博远
2023-03-14

您需要在“config-server”应用程序中提供native配置文件,而将development配置文件留给客户端。以下配置工作:

配置服务器

>

  • bootstrap.yml

    server:
      port: 9001
      servlet.context-path: /my-config-server
    
    spring:
      application.name: my-config-server
      profiles:
        active: native
      main:
        banner-mode: "OFF"
      cloud:
        config:
          uri: http://localhost:9001/my-config-server
          fail-fast: true
          username: root
          password: root
    
    spring:
      profiles: native
      cloud:
        config:
          server:
            native:
              searchLocations: file:<path-to-files>
              git:
                clone-on-start: false # Only clone(true) on-demand
    
    spring:
      application.name: user-api
      profiles:
        active: development
      main:
        #banner-mode: "OFF"
      cloud:
        config:
          uri: http://localhost:9001/my-config-server
          fail-fast: true 
          username: root
          password: root
    

  •  类似资料:
    • 问题内容: 我想我丢失了一些东西,因为我在文档中找不到如何编写供Redis实例与sidekiq一起使用的用户名和密码。 有没有办法做到这一点?还是通过ENV变量? 问题答案: Sidekiq将无法识别的redis选项直接传递给Redis驱动程序: Redis没有用户的概念,因此只有密码。

    • 我一直在努力遵循这个教程: https://www.baeldung.com/spring-security-basic-authentication 我创建了几个restendpoint,如下所示: 现在的问题是,每当我试图发送POST请求时,我都会得到以下错误消息: HTTP状态401-访问此资源需要完全身份验证 我尝试了两种方法来发送请求,一种是通过邮递员 1.1 401 set-cooki

    • 问题内容: 我试图让我的自定义Java应用程序使用我们的Active Directory服务器进行身份验证,但由于某种原因我无法使其正常工作。谁能看到为什么呢?这是我的方法如下: 结果: 问题答案: 你尝试过这种方式吗? 也更换 与

    • 我正在开发一个Web应用程序 然而,我在尝试允许用户通过注册链接注册时遇到了一个问题。如果用户未经身份验证,则无法访问注册表的链接(“showRegistrationForm”) 有人能洞察为什么会发生这种情况吗?我在下面包含了我的安全配置中的代码片段

    • 尝试将ember应用程序连接到oauth2身份验证服务时,获得一个[error=“unauthorized”,error_description=“访问此资源需要完全身份验证”]。如有任何建议,我们将不胜感激。我花了几天时间想解决这个问题,但没有效果。 下面是app.js中的代码

    • 将配置服务器用户名和密码存储为环境变量(在客户端和服务器中)还是使用密钥库更好?密钥库密码无论如何都存储为环境变量,那么为什么实际使用密钥库呢?还是有更好的方法在SpringCloudConfig服务器中实现身份验证?