我正在开发一个Sping Boot / Spring Security应用程序,它使用Keycloak作为身份和访问管理(IAM)组件。我们有一个用户界面,管理员可以在其中定义子用户和相关权限,以查看、编辑和删除不同的模块。这些权限可以随时更新,并在我们应用程序的Postgres数据库中进行维护。
我已经使用Spring Security生成的JWT标记完成了初始实现,其中我将这些权限添加为Granted Authorities,并在方法级别使用注解(如@PreAuthorize("hasAuthority('LIST_CURRENCIES')")
)来实现这一点。但是,当我将IAM卸载到Keycloak时,到目前为止,还没有成功地实施方法级别的安全性。
我们如何将这些权限同步到Keycloak,以便每个用户的权限列表可以作为可以由Spring Security强制执行的声明包含在JWT令牌中?
1条答案
按热度按时间7cwmlq891#
您可以查看https://github.com/ch4mpy/user-proxies的
api
模块。在这个项目中,我为keycloak定义了一个自定义Map器,以便为访问令牌添加一个自定义声明,然后在spring-security SpEL中使用它。