使 Keycloak 身份验证与自己的 JWT 令牌生成一起使用

Make Keycloak authentication work with own JWT tokens generation

我公司有一个 Keycloak (KC) 服务器,我正在开发一些应用程序。 后端是 Spring Boot 2.6.6,前端是 AngularJs。 当用户按下 'Log In' 按钮时,用户将被重定向到 KeyCloak 登录页面并输入 证书。这部分已经实现并且工作正常。

但接下来是一个棘手的部分:我需要 return 将 JWT 令牌前端化为一些授予的权限,这些权限将取决于每个特定用户的应用程序从其数据库中获取的内容。所有其他端点都将具有具有所需权限的@PreAuthorize。 所以,我无法从 KC 获得 JWT,因为 KC 对应用程序对用户授予权限的愿景一无所知。

能否请您提供一些实现此目标的想法?因为我正在尝试实施这一点,并对实现这一目标的可能性产生怀疑。 我遇到的错误之一是:

Found WebSecurityConfigurerAdapter as well as SecurityFilterChain. Please select just one.

谢谢

Keycloak 是 OAuth2 和 OpenID Connect(OIDC) 协议投诉。这意味着您可以在 OAuth2 中使用已经定义的授权流程模式。

Auth2 实现了称为 Authorization Code Flow 的分步授权逻辑 - 这是众多授权逻辑之一,但我相信这是最适合您的用例的。此流程的 RFC 文档对其进行了很好的解释,您可以找到它们 here。您还应该看看 Keycloak 实现是如何完成的。

在您的项目中学习和实施此流程将提供行业标准解决方案。