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

带有钥匙斗篷的Spring Cloud微服务

邹海超
2023-03-14

我有一个springcloudmicroservices项目,它使用springcloudconfig服务器管理配置,使用Eureka服务器进行服务发现。

我的应用程序一直做得很好,直到我想添加一个新的带有键斗篷的微服务。这个新的微服务只是我的Vue前端应用程序的一个Rest应用编程接口,用户管理预计将由KeyCloak处理。

新服务运行正常,并将其自身注册到Eureka,直到我将KeyClope依赖项添加到项目中。应用程序不会崩溃或抛出任何错误,StartUp正常,并将自己注册到Eureka,但在Spring Boot管理服务器面板上,我看到应用程序已关闭。

这是我的名片。新服务的属性文件。

eureka.instance.preferIpAddress=true
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka
eureka.instance.leaseRenewalIntervalInSeconds=3
eureka.client.eureka-connection-idle-timeout-seconds=3
eureka.client.fetchRegistry=true

spring.boot.admin.client.url=http://localhost:6060
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

server.port=8082

keycloak.auth-server-url=http://localhost:8080/auth
keycloak.realm=microservices
keycloak.resource=microservices-app
keycloak.public-client=true

keycloak.security-constraints[0].authRoles[0]=user
keycloak.security-constraints[0].securityCollections[0].patterns[0]=/*
keycloak.cors=true

以下是我对新服务的依赖项。

...
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.thymeleaf</groupId>
                <artifactId>thymeleaf</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-spring-boot-starter</artifactId>
        <version>4.8.3.Final</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.keycloak.bom</groupId>
            <artifactId>keycloak-adapter-bom</artifactId>
            <version>4.8.3.Final</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Spring云版本是Hoxton。SR1

Spring Boot版本为2.2.2。发布代码

我尝试过添加Spring Security性,并使用keydaperthenticationprovider进行java配置,但没有帮助。

在整个项目中,我有很多奇怪的错误,由Spring Cloud版本或Spring Cloud-Spring Boot Admin交互引起,所以更改版本或向配置文件添加一个小参数通常会起到作用,我怀疑这个KeyCloak问题会以同样的方式解决。


共有1个答案

谭安翔
2023-03-14

Spring Boot Admin使用执行器endpoint,尝试使它们不受保护:

    keycloak.security-constraints[0].authRoles[0]=user
    keycloak.security-constraints[0].securityCollections[0].patterns[0]=/*
    keycloak.security-constraints[0].securityCollections[1].patterns[0]=/actuator
    keycloak.security-constraints[0].securityCollections[1].patterns[1]=/actuator/*
 类似资料:
  • 我正在我的应用程序(app1)中使用KeyClope(版本8.0.1)作为身份代理。在我的应用程序中,用户可以使用外部idp(谷歌、fb)或从我们的登录页面进行签名。现在,我设置了另一个keyclope实例,并使用OIDC将其配置为IDP。它工作得很好。 如果用户已准备就绪,请登录外部idp(谷歌、fb),并从app2的网页上单击我的应用程序(app1)。有没有办法,我可以自动让用户进入,而不是将

  • 我正在开发一个连接到java(Spring框架)后端的角webapp。身份验证是通过密钥斗篷服务器完成的。 在我的带有嵌入式tomcat服务器的本地机器上,angular应用程序和spring应用程序运行正常。 对于部署,我需要使用传统的方式,使用现有的tomcat服务器。 角度前端在根目录中通过http://myurl/spring后端作为war文件放置,可以通过http://myurl/api

  • 我用这个例子:https://github.com/foo4u/keycloak-spring-demo 我有钥匙斗篷。json文件在我的WEB-INF文件夹中,但当我运行应用程序时,会出现以下异常: 此异常的完整堆栈: 这段代码只是Spring Boot和KeyCloak集成的一个例子。 你能告诉我我做错了什么吗? 谢谢你的回答和时间。

  • 我有一个问题运行Spring启动和钥匙斗篷都在docker容器。 我从在docker中运行的数据库mysql的KeyClope开始。 然后我添加了我的领域(SpringBootKey斗篷)、我的客户机(testclient)和一个角色为“user”的用户。之后,我将Spring Security性添加到我的Spring Boot应用程序中。编辑了我的申请。yml 根据我添加了我的SecurityC

  • 我正试图在我的spring boot应用程序中使用KeyClope。 我想根据REST方法和用户角色限制对特定URL的访问。 在下面的示例中,具有或角色的用户可以执行GET,而具有或角色的用户可以执行POST、PUT或DELETE。 不幸的是,此配置允许任何经过身份验证的用户访问/api/日历URL。我做错了什么?