gpt4 book ai didi

spring-boot - 如何使用 keycloak 在 spring security 中同时处理安全 Web 浏览器请求和 Restful 请求

转载 作者:行者123 更新时间:2023-12-05 05:16:36 24 4
gpt4 key购买 nike

我正在使用带有 keycloak 的 spring boot security 来保护我的应用程序。但是我既有正常的网络浏览器请求(使用 thymeleaf 模板),也有 rest api 请求(没有浏览器和 Controller 中用 @ResponseBody 注释的 json 格式的方法)。

从 web guider,我发现 keycloak 将使用不同的客户端类型用于浏览器请求(例如公共(public)客户端)和无 UI 请求(bearer-only),并且 SecurityConfig.java 中的 session 是不同的,new RegisterSessionAuthenticationStrategy (new SessionRegistryImpl())new NullAuthenticatedSessionStrategy()

所以我的问题是如何在一个应用程序中配置 spring security 和 keycloak 以同时支持浏览器请求和 rest api 请求?

谢谢!

最佳答案

拥有一个bearer-only 客户端只有在您有另一个客户端进行身份验证时才有意义。简而言之,这是 Keycloak 中的三种客户端类型:

  • 公共(public):允许身份验证,无需客户端密码。
  • secret :允许使用客户端 secret 进行身份验证。
  • Bearer only:您需要有访问 token 才能访问其资源。

话虽如此,我不认为将同一个应用程序既公开又仅作为承载有什么意义。通常,您为每个应用程序创建一个客户端。所以你有两个选择:

  • 将您的申请公开或保密。这将接受浏览器和非浏览器请求。推荐。
  • 将您的应用程序一分为二,一个只提供 UI(公共(public)或 secret )服务,另一个提供 REST API(仅承载)。不过,请记住您需要使用 UI 客户端登录以验证您自己的身份。仅当您的应用程序 API 大到足以从 UI 中分离出来时才可取。

关于spring-boot - 如何使用 keycloak 在 spring security 中同时处理安全 Web 浏览器请求和 Restful 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50230753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com