基于JavaScript的策略

您可以使用此类型的策略来定义使用JavaScript的权限的条件。它是Keycloak支持的基于规则的策略类型之一,可以灵活地编写基于Evaluation API的任何策略。

要创建新的基于JavaScript的策略,请在策略列表右上角的下拉列表中选择JavaScript。

配置

  • Name

描述政策的人性可读和唯一的字符串。最佳做法是使用与您的业务和安全要求密切相关的名称,以便您更轻松地识别它们。

  • Description

包含有关此策略详细信息的字符串。

  • Code

JavaScript代码为此策略提供条件。

  • Logic

在其他条件得到评估之后,该政策的逻辑应用。

例子

以下是使用基于属性的访问控制(ABAC)基于从执行上下文获取的属性来定义条件的基于JavaScript的策略的简单示例:

var context = $evaluation.getContext();
var contextAttributes = context.getAttributes();

if (contextAttributes.containsValue('kc.client.network.ip_address', '127.0.0.1')) {
    $evaluation.grant();
}

还可以使用基于角色的访问控制(RBAC):

var context = $evaluation.getContext();
var identity = context.getIdentity();

if (identity.hasRole('keycloak_user')) {
    $evaluation.grant();
}

或者几种访问控制机制的组合:

var context = $evaluation.getContext();
var identity = context.getIdentity();
var attributes = identity.getAttributes();
var email = attributes.getValue('email').asString(0);

if (identity.hasRole('admin') || email.endsWith('@keycloak.org')) {
    $evaluation.grant();
}

在编写自己的规则时,请记住$evaluation对象是一个实现org.keycloak.authorization.policy.evaluation.Evaluation的对象。有关您可以从此界面访问的更多信息,请参阅EvaluationAPI

results matching ""

    No results matching ""