Spring Security 仅适用于特定上下文的权限?钥匙斗篷

ttisahbt  于 2023-08-05  发布在  Spring
关注(0)|答案(2)|浏览(99)

让我们想象一下,我需要开发一些像Discord的东西,将有角色和权限,适用于公会的上下文。现在我需要实现一个具有类似功能的系统。
您将如何实施这样一个系统?
我有点困惑,我计划使用Spring Framework和Keycloak作为SSO。我看不出它如何可以应用于权限管理。
另外值得一提的是,客户端是Web浏览器中的SPA。

66bbxpm5

66bbxpm51#

您可以为每个公会创建不同的角色(如guild-a:moderatorguild-a:member等):有一个管理API,你可以从你的Spring应用程序调用它来创建新的角色,当一个新的公会创建。您甚至可以使用此API以编程方式将此角色分配给某些用户。
另一种方式是在Spring应用程序中处理跨公会的用户角色分配,并为其公开REST API。然后,您可以定义一个Keycloak“Map器”,它将在用户登录过程中(在用户被成功识别之后,但在发放访问令牌之前)查询此API,并在私有声明中写入用户的公会角色矩阵。我在this project中做了类似的事情(在KeycloakMap器中使用REST调用的结果设置私有声明)。

jucafojl

jucafojl2#

我在多个项目中使用过Keycloak,一旦你掌握了它的窍门,它会非常棒。除了常规角色外,Keycloak还支持角色属性和具有自己属性的组。例如,您可以拥有一个“admin”角色,该角色具有很酷的属性,如canDeleteUser: truecanCreateUser: true。这些属性的工作方式类似于键-值对,您可以自定义它们来执行任何需要的操作。哦,别忘了团体!您可以创建组、向其中添加用户以及向组分配角色。这样,组中的每个用户都会自动获得分配的角色。
Keycloak最好的地方之一就是它的易用性。它功能强大,安全,并照顾到您的所有安全问题。此外,还有大量的工具和模块可供使用,使使用Keycloak更加方便。如果您使用的是Java,那么您很幸运,因为这里有关于如何将Keycloak与Java集成的优秀文档。这绝对会让你的生活更轻松。

在您的情况下,我将使用领域角色作为角色,角色属性作为权限。

希望你觉得这有帮助

相关问题