小编Sur*_*raj的帖子

Keycloak:用户基于角色的客户端登录访问限制

我正在尝试使用 keycloak 实现基于角色的客户端应用程序(VueJS 多页应用程序)控制的相当简单的用例。

客户端角色映射

如图所示,我在单个领域中有三个不同的角色和三个不同的客户端。
图中的箭头代表哪个角色可以访问哪个客户端。

所以我的主要目标是,

  • 具有角色的用户Viewer应该只能登录Viewer Application. 如果同一用户尝试访问Operator ApplicationAdmin application再keycloak应该简单地拒绝这样做此用户。
  • 对于具有AdminOperator角色的用户,应遵循相同的规则。Admin角色的用户应该能够通过 keycloak登录到这些应用程序中的任何一个。

为了实现这个用例,我尝试了以下方法,

  • 首先通过适当的角色映射到用户和在客户端创建角色。在这种情况下,我先创建领域级别角色,然后创建客户端级别角色,然后将适当的角色分配给在用户部分创建的用户。
  • 启用Authorization. 在策略中,我删除了授予所有用户访问客户端的默认策略。并创建User策略和Client策略来限制对客户端应用程序的访问
  • 还尝试了Group基于授权策略。在这种情况下,我创建了一个具有客户端角色的组,然后将用户分配到这些组。并从Authorization组策略启用它们。

但是,不幸的是,这些都不起作用。这意味着我的具有Viewer角色的用户可以登录到我的管理应用程序。这很奇怪。

security vue.js openid-connect keycloak

9
推荐指数
3
解决办法
2876
查看次数

赛普拉斯 + Vuetify 复选框未识别

我正在使用 Vuetify JS 在我的 VueJS 应用程序中创建 UI 组件。此外,我使用 CypressJS 作为测试框架来测试这些 UI 组件。我希望测试的功能之一是对这些复选框的简单检查操作。

根据柏树文档,我为这些复选框提供了一个data-cy属性,例如

<v-checkbox data-cy="app-checkbox>".

但是,在柏树测试中,当我使用选择器引用此元素时

cy.get('[data-cy="app-checkbox"]').check({force: true});

柏树正在抛出和错误

CypressError: cy.check() can only be called on :checkbox and :radio. Your subject contains a: <div class="v-input v-input--selection-controls v-input--checkbox v-input--is-label-active v-input--is-dirty" data-cy="app-layer-checkbox">...</div>

ps 我认为这个问题类似于这个这个问题,但即使使用 jQuery 选择器我也无法对这个元素执行检查。

关于如何解决这个问题的任何建议肯定会有所帮助。

谢谢 :)

javascript checkbox vue.js vuetify.js cypress

4
推荐指数
1
解决办法
2062
查看次数