基于微服务的环境中的 Keycloak 身份验证流程

Keycloak authentication flow in a microservices based environment

我想在基于微服务的环境中使用 Keycloak,其中身份验证基于 OpenID 端点 REST 调用(“/token”,不重定向到 keycloak 登录页面),我想到的流程是这样的:

1. 前端 SPA 从“/token”端点检索令牌并存储在浏览器的 localStorage 中,然后将其与每个请求一起发送。

2.网关级认证:Access Token从前端传递到网关,网关向Keycloak服务器查询token是否仍然有效(未被注销端点调用失效)。

3. 基于微服务的授权:Access Token 从网关传递到微服务,使用 Spring 启动适配器,微服务离线检查令牌的签名(bearer-only client?)然后基于角色在token做授权。

我的问题是:这个流程有意义吗?或者你能建议另一个流程吗?使用什么类型的 Keycloak 客户端?使用 Spring 引导适配器传递令牌的理想方式是什么,一开始就应该这样做吗?请记住,我不是 Keycloak 专家,我已经做了研究,但我仍然有疑问。

你的Front-end SPA应该是public-client,springboot微服务应该是Bearer only Client,Gateway可以是Confidential Client。

你可以查看Keycloak提供的oidc adapters。对于 springboot,你使用 keycloak 提供的适配器

讨论了使用 api 网关的类似解决方案 here