为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哔哔one 2021-12-30 16:39:57
我已经成功设置了 Keycloak 和一个公共/前端 Spring Boot 应用程序。一切都按预期工作。前端 Spring Boot App 在 Keycloak 中配置为 Realm 中的客户端(app-ui),用户可以通过 keycloak 登录,令牌成功通过,一切都很好。Spring Security 正在保护端点,并且端点的角色受到尊重。现在,我正在尝试在混合中添加一个下游 Spring Boot 应用程序(Web 服务),我希望它知道登录用户能够保护对它的调用。前端 Spring Boot App 使用 Feign Client 调用后端 Spring Boot App 上的 REST 端点,但后端不做任何认证/授权。我有几个问题无法弄清楚:如何设置前端 Spring Boot 应用程序以将经过身份验证的用户详细信息传递给后端 Spring Boot 应用程序(RequestInterceptor / RestTemplate / Feign config / Http Headers)?我如何配置后端 Spring Boot 应用程序以使用它从上游 Spring Boot 应用程序接收到的经过身份验证的用户详细信息,以及我需要向后端 Spring Boot 应用程序添加哪些依赖项以促进这一点(org.keycloak:keycloak -spring-boot-starter 和 org.springframework.boot:spring-boot-starter-security)?我需要在 Keycloak 中为后端 Spring Boot App 配置什么吗?它是否应该在 Keycloak 中注册为机密/非公开客户端(例如 app-api)?在后端 Spring Boot App 中是否有特定的配置?它是否与 Keycloak 对话以验证它从上游调用者那里收到的经过身份验证的用户详细信息?我很想看到一个演示或教程,它使我所看到的How to integrate Keycloak and Spring Boot更进一步,以保护任何其他下游服务。如果我能弄清楚这一点,我会发布一个。我假设这可以通过后端 Spring Boot App 上的标准 OAuth2 配置来完成,但我不确定建议如何实现这种架构。这是我尝试设置的架构:
查看完整描述

1 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

如何设置前端 Spring Boot 应用程序以将经过身份验证的用户详细信息传递给后端 Spring Boot 应用程序(RequestInterceptor / 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-spring-boot-starter' 和 'spring-boot-starter-security' 依赖项,也在您的添加 'keycloak-adapter-bom' 中。在您的 application.properties 中,您应该具有以下提到的属性


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 App 配置什么吗?它是否应该在 Keycloak 中注册为机密/非公开客户端(例如 app-api)?


您需要创建一个新客户端,它应该注册为“仅承载”


你可以参考这个链接:https : //www.keycloak.org/docs/latest/securing_apps/#_spring_boot_adapter


查看完整回答
反对 回复 2021-12-30
  • 1 回答
  • 0 关注
  • 521 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号