基于规则的策略

使用这种类型的策略,您可以使用Drools定义条件,这是一个规则评估环境。它是Keycloak支持的基于规则的策略类型之一,并提供了基于Evaluation API编写任何策略的灵活性。

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

配置

  • Name

描述政策的人性可读和唯一的字符串。我们强烈建议您使用与您的业务和安全要求密切相关的名称,以便您更容易地识别它们,并且知道它们的实际意义。

  • Description

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

  • Policy Maven Artifact

指向定义规则的工件的Maven groupId-artifactId-version(GAV)。提供GAV后,您可以单击解析以加载模块和会话字段。

  • Group Id

该规则的groupId

  • Artifact Id

该规则的artifactId

  • Version

该规则的版本。

  • Module

本策略使用的模块。必须提供一个模块来选择将加载规则的特定会话。

  • Session

本政策使用的会话。会话提供了在处理策略时评估的所有规则。

  • Update Period

指定扫描规则更新的间隔。

  • Logic

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

Examples

以下是基于Drools的策略的一个简单示例,该策略使用基于属性的访问控制(ABAC)来定义只有经过身份验证的用户是所请求资源的所有者才能评估为GRANT的条件:

import org.keycloak.authorization.policy.evaluation.Evaluation;
rule "Authorize Resource Owner"
    dialect "mvel"
    when
       $evaluation : Evaluation(
           $identity: context.identity,
           $permission: permission,
           $permission.resource != null && $permission.resource.owner.equals($identity.id)
       )
    then
        $evaluation.grant();
end

您甚至可以使用ABAC的其他变体从身份获取属性并相应地定义条件:

import org.keycloak.authorization.policy.evaluation.Evaluation;
rule "Authorize Using Identity Information"
    dialect "mvel"
    when
       $evaluation : Evaluation(
           $identity: context.identity,
           identity.attributes.containsValue("someAttribute", "you_can_access")
       )
    then
        $evaluation.grant();
end

有关可以从org.keycloak.authorization.policy.evaluation.Evaluation界面访问的更多信息,请参阅Evaluation API

results matching ""

    No results matching ""