K. *_*ddy 1 spring-security oauth-2.0 spring-boot spring-cloud-gateway
我有一个 Spring Boot MVC + Thymeleaf 应用程序,它通过 Spring Cloud Gateway 与一堆微服务进行通信。
mvc_app -> gateway -> (service_a, service_b,...)
现在,我想实现基于 OAuth 2 的安全性,并且希望将身份验证过程集中在网关级别。
这意味着:
这可以通过以下方式实现:
spring-boot-starter-oauth2-client使用适当的提供者/客户端配置将网关设置为 OAuth 2 客户端问题:
当您通过网关进行身份验证时,身份验证状态将在网关应用程序级别维护。网关成功验证后,如何发回 AccessToken、IdToken 以便mvc_app进一步请求时使用相同的 AccessToken?
您可能应该重新考虑您的意图:您希望使用TokenRelay过滤器在使用会话保护的前端和使用令牌(资源服务器)保护的微服务之间建立桥梁,但是您希望向前端提供令牌。重点是什么?
您的 Spring MVC 前端可以是可靠的 OAuth2 客户端。您应该将其配置为 OAuth2“机密”客户端(使用oauth2login),并使网关对安全性透明(什么都没有)。
Spring REST 客户端(WebClient、RestTemplate、@FeignClient,甚至是新的RestClient)都被设计为与授权客户端存储库集成,并在会话中使用访问令牌透明地填充授权标头。有关详细信息,请参阅您选择的产品的手册。
当前端是 SPA(Angular、React、Vue 等)或本机应用程序时,将网关配置为具有登录和过滤器的 OAuth2 客户端TokenRelay很有意义,因为它不能是机密客户端。实际上,您不想为此类应用程序提供 OAuth2 令牌:您仅使用会话(和 CSRF)cookie 对其进行授权,并在服务器上保持令牌安全。
| 归档时间: |
|
| 查看次数: |
421 次 |
| 最近记录: |