【发布时间】:2021-11-04 22:01:20
【问题描述】:
我目前想使用 Spring Cloud Gateway 来保护我的微服务架构。前端向 Keycloak 服务器进行身份验证,然后在每个请求中发送令牌。 现在的情况是只有网关应该暴露给外部,而各个服务将无法从外部访问。
如何在 keycloak 服务器上验证不记名令牌?
我已经在互联网上搜索了一段时间,但还没有找到任何已验证令牌的地方。在任何地方都通过网关完成身份验证,然后由各个服务验证令牌。但是,当我将网关声明为 OAuth2 资源服务器时,整个事情就不起作用了。
【问题讨论】:
-
在您的情况下,我认为应该是验证令牌的服务(您的实际资源服务器),而不是网关。在更传统的spring oauth2(授权代码流)场景中,网关应该负责用keycloak生成令牌并在需要时刷新
-
@LeoG。但是为什么我需要在实际资源服务器未公开公开时对其进行验证,以及当没有活动用户时如何管理这些服务之间的请求,例如当我有每 10 分钟运行一次任务并需要数据的服务时来自不同的服务。
-
通常是资源服务器的角色来验证和验证用户:oauth.com/oauth2-servers/the-resource-server 但是有了网关,责任确实更难确定。服务到服务的通信可以通过客户端凭证流完成:oauth.com/oauth2-servers/access-tokens/client-credentials Spring Oauth2 支持,您可以在 SO 上找到一些示例
-
@LeoG。谢谢,我今天晚些时候会查看链接并报告
-
@LeoG。所以我明白了这个概念,但我目前并不知道如何实现它。我找到的每个教程都使用网关进行身份验证。但就我而言,前端已经完成了身份验证。你有我的场景的教程吗
标签: spring-boot keycloak spring-cloud spring-cloud-gateway spring-oauth2