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

如何在微服务架构中设置Keycloak+Spring Boot+Oauth2

慕容恩
2023-03-14

我已经成功地设置了Keycloak和一个公共/前端spring boot应用程序。一切都在按预期进行。前端的Spring Boot应用程序是在Keycloak中作为客户端(app-ui)配置的,用户可以通过Keycloak登录,令牌顺利通过一切都很棒。Spring Security保护endpoint,并尊重endpoint的角色。

现在,我试图在混合中添加一个下游Spring Boot应用程序(Web服务),我希望它能够意识到登录的用户,以便能够保护对它的调用。前端Spring Boot应用程序使用Feign Client调用后端Spring Boot应用程序上的RESTendpoint,但后端不进行任何身份验证/授权。

我有几个问题我很难弄清楚:

    null

以下是我试图设置的架构:

共有1个答案

萧阳波
2023-03-14

如何设置前端Spring Boot应用程序以将经过身份验证的用户详细信息传递给后端Spring Boot应用程序(requestinceptor/RestTemplate/Feign config/Http Headers)?

您需要在http请求头中传递承载令牌。

如何配置后端Spring Boot应用程序以使用它从上游Spring Boot应用程序接收的经过身份验证的用户详细信息,以及需要向后端Spring Boot应用程序添加哪些依赖项来促进这一点(org.keycloak:keycloak-spring-boot-starter和org.springframework.Boot:spring-boot-starter-security)?

keycloak.realm =
keycloak.auth-server-url = your keycloak url
keycloak.ssl-required =external
keycloak.bearer-only=true
keycloak.resource =your client name
keycloak.credentials.secret= your secret key
keycloak.security-Constraints[0].authRoles[0] = user
keycloak.security-Constraints[0].securityCollections[0].patterns[0] = /*
keycloak.cors=true

我需要在Keycloak中为后端Spring Boot应用html" target="_blank">程序配置什么吗?是否应该在Keycloak中注册为机密/非公共客户端(例如app-api)?

您需要创建一个新的客户端,并且它应该注册为“只携带者”

您可以参考以下链接:https://www.keycloak.org/docs/latest/securing_apps/#_spring_boot_adapter

 类似资料:
  • 我读了一些文章,看了一些视频,但在为这些微服务提供服务方面,没有找到具体的建议。我的理解是,他们应该使用自己的应用程序服务器。 我的问题是它们应该部署在不同的服务器上,还是没关系。 当它们在同一台服务器(计算机)上提供服务时,不会有端口冲突吗?

  • Kubernetes 设计之初就是按照 Cloud Native 的理念设计的,Cloud Native 中有个重要概念就是微服务的架构设计,当将单体应用拆分微服务后, 随着服务数量的增多,如何微服务进行管理以保证服务的 SLA 呢?为了从架构层面上解决这个问题,解放程序员的创造性,避免繁琐的服务发现、监控、分布式追踪等事务,Service mesh 应运而生。 微服务 下图是Bilgin Ibr

  • 到目前为止,我们正在将我们的spring boot monolith迁移到自包含的微服务,并已在端口8999上的一个单独服务中安装和配置了Key斗篷,包括其登录ui。其他Spring Boot服务(包括它们的ui)在端口8080、8082等上运行。 为了加快开发速度,我们希望创建一个本地Docker设置,该设置能够作为我们服务架构的一个可集成的完整设置。这样我就可以在localhost上启动任何服

  • 我缓慢而坚定地采用了微服务方法。所以我创建了一些总是返回JSON的微服务。

  • 如果我们使用spring boot构建所有微服务,那么可以使用Eureka服务器(@EnableEurekaServer)发现所有微服务(@EnableEurekaClient)。如果某些微服务是使用其他技术构建的,那么在云(PCF、AWS等)中如何实现发现、负载平衡、反向代理(网关)? 我在网上读了很多关于微服务的博客,我没有得到适当的信息。

  • 大家好, 我试图找出如何基于Wildfly中运行的模块(war)移动我当前的系统架构。现在所有的基础资源都放在JNDI树中,比如数据源、JMS等等。。。我的项目框架是Spring 4和family,它允许我查找这些资源和其他内容。 我的目标是使用Spring Boot和Spring Cloud Netflix创建一个微服务架构,其中每一个WAR都是一个通过总线服务集成的新的独立应用程序。 但我的疑