Keycloak 基于业务属性的keydepose授权

Keycloak 基于业务属性的keydepose授权,keycloak,Keycloak,以下是我的应用程序的工作方式: 如果用户有足够的芯片(代币)可以从另一个应用程序购买,或者可以在某个事件发生时授予他们,那么他们可以使用我的应用程序的某些功能 用户有一个与他们相关的属性,称为“chip”,它表示一些数字。这些信息可能应该被表示为索赔 我希望keydove为我做这个授权——检查用户是否可以使用该功能。我遇到过基于JavaScript的策略。似乎他们能够操作令牌中的信息-如用户电子邮件等,但这不是我的情况,令牌可以包含过时的信息,即当令牌生成时,用户有足够的芯片,但从那时起他就花

以下是我的应用程序的工作方式:

如果用户有足够的芯片(代币)可以从另一个应用程序购买,或者可以在某个事件发生时授予他们,那么他们可以使用我的应用程序的某些功能
用户有一个与他们相关的属性,称为“chip”,它表示一些数字。这些信息可能应该被表示为索赔

我希望keydove为我做这个授权——检查用户是否可以使用该功能。我遇到过基于JavaScript的策略。似乎他们能够操作令牌中的信息-如用户电子邮件等,但这不是我的情况,令牌可以包含过时的信息,即当令牌生成时,用户有足够的芯片,但从那时起他就花掉了。


也许令牌应该在花费芯片时刷新,但在这种情况下,它会用绑定到用户的当前信息进行更新吗?或者授权服务可以在策略评估期间以某种方式访问数据库?这是否可行,或者这个用例是否有任何优雅的解决方案?

KeyClope不在这里检查用户是否有足够的钱。keydape在这里表示用户是否经过身份验证,以及他是否具有特定应用程序的角色(管理员、用户…)


检查用户是否有足够的钱应该在服务器端。对于传入的请求,您必须在数据库中检查用户是否有足够的芯片来访问应用程序,如果他没有,则返回403。

对于基于角色的访问控制来说,这是正确的,但由于KeyClope支持基于上下文的访问控制(CBAC)和基于规则的访问控制,我想这是可以实现的,而且他们正是为此而设计的,事实上,我已经看过了,你是对的,CBAC可以使用。也许通过一个简单的数据库调用来检查每个请求?但是,由于访问应用程序是使用信用卡,您需要删除应用程序服务器中的信用卡吗?这导致多个服务知道应用程序的成本。我找不到任何优雅的解决方案,服务器无论如何都会参与信用验证。非常感谢您检查我的问题。