Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change proposal for issue #3 #10

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions 5.21 Element Rule.adoc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
= 5.21 Element <Rule> =

The `<Rule>` element SHALL define the individual *_rules_* in the *_policy_*. The main components of this element are the `<Target>`, `<Condition>`, `<ObligationExpressions>` and `<AdviceExpressions>` elements and the `Effect` attribute.
The `<Rule>` element SHALL define the individual *_rules_* in the *_policy_*. The main components of this element are the `<Target>`, `<Condition>`, `<ObligationExpressions>`, `<AdviceExpressions>` and `<VariableDefinition>` elements and the `Effect` attribute.

A `<Rule>` element may be evaluated, in which case the evaluation procedure defined in Section 7.10 SHALL be used.

Expand All @@ -11,9 +11,11 @@ A `<Rule>` element may be evaluated, in which case the evaluation procedure defi
<xs:sequence>
<xs:element ref="xacml:Description" minOccurs="0"/>
<xs:element ref="xacml:Target" minOccurs="0"/>
<xs:element ref="xacml:VariableDefinition" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="xacml:Condition" minOccurs="0"/>
<xs:element ref="xacml:ObligationExpressions" minOccurs="0"/>
<xs:element ref="xacml:AdviceExpressions" minOccurs="0"/> </xs:sequence>
<xs:element ref="xacml:AdviceExpressions" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="RuleId" type="xs:string" use="required"/>
<xs:attribute name="Effect" type="xacml:EffectType" use="required"/>
</xs:complexType>
Expand All @@ -31,6 +33,8 @@ The `<Rule>` element contains the following attributes and elements:

`<Target>` [Optional]:: Identifies the set of *_decision requests_* that the `<Rule>` element is intended to evaluate. If this element is omitted, then the *_target_* for the `<Rule>` SHALL be defined by the `<Target>` element of the enclosing `<Policy>` element. See Section 7.7 for details.

`<VariableDefinition>` [Any Number]:: Common variable definitions that can be referenced from anywhere in the `<Condition>`, `<ObligationExpressions>` and `<AdviceExpressions>` of this *_rule_* where an expression can be found.

`<Condition>` [Optional]:: A *_predicate_* that MUST be satisfied for the *_rule_* to be assigned its `Effect` value.

`<ObligationExpressions>` [Optional]:: A *_conjunctive sequence_* of *_obligation_* expressions which MUST be evaluated into *_obligations_* by the PDP. The corresponsding *_obligations_* MUST be fulfilled by the *_PEP_* in conjunction with the *_authorization decision_*. See Section 7.18 for a description of how the set of *_obligations_* to be returned by the *_PDP_* SHALL be determined. See section 7.2 about enforcement of *_obligations_*.
Expand Down
2 changes: 1 addition & 1 deletion 5.23 Element VariableDefinition.adoc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
= 5.23 Element <VariableDefinition> =

The `<VariableDefinition>` element SHALL be used to define a value that can be referenced by a `<VariableReference>` element. The name supplied for its `VariableId` attribute SHALL NOT occur in the `VariableId` attribute of any other `<VariableDefinition>` element within the encompassing *_policy_*. The `<VariableDefinition>` element MAY contain undefined `<VariableReference>` elements, but if it does, a corresponding `<VariableDefinition>` element MUST be defined later in the encompassing *_policy_*. `<VariableDefinition>` elements MAY be grouped together or MAY be placed close to the reference in the encompassing *_policy_*. There MAY be zero or more references to each `<VariableDefinition>` element.
The `<VariableDefinition>` element SHALL be used to define a value that can be referenced by a `<VariableReference>` element. The name supplied for its `VariableId` attribute SHALL NOT occur in the `VariableId` attribute of any other `<VariableDefinition>` element within the encompassing *_policy_* or *_rule_*. To prevent circular references, a `<VariableDefinition>` element MUST be defined before being referenced by a `<VariableReference>` element in the encompassing *_policy_* or *_rule_*. `<VariableDefinition>` elements MAY be grouped together or MAY be placed close to the reference in the encompassing *_policy_* or *_rule_*. There MAY be zero or more references to each `<VariableDefinition>` element.

[source,xml]
----
Expand Down
2 changes: 1 addition & 1 deletion 5.24 Element VariableReference.adoc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
= 5.24 Element <VariableReference> =

The `<VariableReference>` element is used to reference a value defined within the same encompassing `<Policy>` element. The `<VariableReference>` element SHALL refer to the `<VariableDefinition>` element by *_identifier equality_* on the value of their respective `VariableId` attributes. One and only one `<VariableDefinition>` MUST exist within the same encompassing `<Policy>` element to which the `<VariableReference>` refers. There MAY be zero or more `<VariableReference>` elements that refer to the same `<VariableDefinition>` element.
The `<VariableReference>` element is used to reference a value defined within the same encompassing `<Policy>` or `<Rule>` element. The `<VariableReference>` element SHALL refer to the `<VariableDefinition>` element by *_identifier equality_* on the value of their respective `VariableId` attributes. One and only one `<VariableDefinition>` MUST exist within the same encompassing `<Policy>` or `<Rule>` element to which the `<VariableReference>` refers. There MAY be zero or more `<VariableReference>` elements that refer to the same `<VariableDefinition>` element.

[source,xml]
----
Expand Down
4 changes: 2 additions & 2 deletions 7.8 VariableReference Evaluation.adoc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
= 7.8 VariableReference Evaluation =

The `<VariableReference>` element references a single `<VariableDefinition>` element contained within the same `<Policy>` element. A `<VariableReference>` that does not reference a particular `<VariableDefinition>` element within the encompassing `<Policy>` element is called an undefined reference. *_Policies_* with undefined references are invalid.
The `<VariableReference>` element references a single `<VariableDefinition>` element contained within the same `<Policy>` or `<Rule>` element. A `<VariableReference>` that does not reference a particular `<VariableDefinition>` element within the encompassing `<Policy>` or `<Rule>` element is called an undefined reference. *_Policies_* and *_Rules_* with undefined references are invalid.

In any place where a `<VariableReference>` occurs, it has the effect as if the text of the `<Expression>` element defined in the `<VariableDefinition>` element replaces the `<VariableReference>` element. Any evaluation scheme that preserves this semantic is acceptable. For instance, the expression in the `<VariableDefinition>` element may be evaluated to a particular value and cached for multiple references without consequence. (I.e. the value of an `<Expression>` element remains the same for the entire *_policy_* evaluation.) This characteristic is one of the benefits of XACML being a declarative language.
In any place where a `<VariableReference>` occurs, it has the effect as if the text of the `<Expression>` element defined in the `<VariableDefinition>` element replaces the `<VariableReference>` element. Any evaluation scheme that preserves this semantic is acceptable. For instance, the expression in the `<VariableDefinition>` element may be evaluated to a particular value and cached for multiple references without consequence. (I.e. the value of an `<Expression>` element remains the same for the entire evaluation of the *_policy_* or *_rule_* where the `<VariableDefinition>` is defined.) This characteristic is one of the benefits of XACML being a declarative language.

A variable reference containing circular references is invalid. The PDP MUST detect circular references either at policy loading time or during runtime evaluation. If the PDP detects a circular reference during runtime the variable reference evaluates to "Indeterminate" with status code urn:oasis:names:tc:xacml:1.0:status:processing-error.
1 change: 1 addition & 0 deletions xacml-core-v3-schema-wd-17.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,7 @@
<xs:sequence>
<xs:element ref="xacml:Description" minOccurs="0"/>
<xs:element ref="xacml:Target" minOccurs="0"/>
<xs:element ref="xacml:VariableDefinition" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="xacml:Condition" minOccurs="0"/>
<xs:element ref="xacml:ObligationExpressions" minOccurs="0"/>
<xs:element ref="xacml:AdviceExpressions" minOccurs="0"/>
Expand Down