Problem
The inline denial-binding form is never specified. A self-contained binding_token must carry the denied Subject, Resource, Action, and authorization-relevant Context "inline or as a binding_hash", and the inline form is RECOMMENDED for interoperability because it is compared structurally and needs no agreed byte canonicalization. binding_hash, binding_context_members, and denial_expires_at are named. The inline claims are not. The hashed form is fully specified, so two independent implementations can interoperate today by using it; what is blocked is the portable use of the form the text recommends.
The claim list's stated force does not match the verification procedure. The list is introduced by "SHOULD include the following claims", yet aud inside it is REQUIRED and carries a verifier-side MUST-reject, the verification steps require the expiry, and both key selection and issuer trust depend on iss, which carries no keyword at all. The interoperable JWT contract is stricter than its own introduction says.
The PEP's echo does not compose with the service's requirement. denial.binding_token is REQUIRED when denial.evaluation_id is absent and OPTIONAL otherwise. A PEP holding both may therefore omit the token and remain conformant, while an Independent Access Request Service requires it and rejects the submission. Two conformant implementations fail to interoperate.
Recommendation
Name the inline binding claims, so the recommended form is usable across implementations.
Define a normative JWT subset and keep the general statement that binding_token is opaque and format-flexible:
- REQUIRED:
iss, aud, exp, the binding representation (inline claims or binding_hash), and binding_context_members when Context participates in the binding.
- RECOMMENDED:
iat, jti.
- OPTIONAL:
evaluation_id, and deployment-specific claims.
Make the PEP's echo unconditional: the PEP echoes every denial member the PDP supplied, unchanged. This changes the force of an existing rule, which is why it is a working-group decision rather than an editorial correction.
Related
Once the claims are named, the illustrative tokens need correcting. Every binding_token in the base draft and its companions decodes to correlation data alone, with no aud, whose absence a conformant service must reject, and no binding_context_members. The base draft's token carries an evaluation_id only, which the text says does not satisfy the independent-service requirement it is meant to illustrate. That is an editor task, not a decision for this issue.
Problem
The inline denial-binding form is never specified. A self-contained
binding_tokenmust carry the denied Subject, Resource, Action, and authorization-relevant Context "inline or as abinding_hash", and the inline form is RECOMMENDED for interoperability because it is compared structurally and needs no agreed byte canonicalization.binding_hash,binding_context_members, anddenial_expires_atare named. The inline claims are not. The hashed form is fully specified, so two independent implementations can interoperate today by using it; what is blocked is the portable use of the form the text recommends.The claim list's stated force does not match the verification procedure. The list is introduced by "SHOULD include the following claims", yet
audinside it is REQUIRED and carries a verifier-side MUST-reject, the verification steps require the expiry, and both key selection and issuer trust depend oniss, which carries no keyword at all. The interoperable JWT contract is stricter than its own introduction says.The PEP's echo does not compose with the service's requirement.
denial.binding_tokenis REQUIRED whendenial.evaluation_idis absent and OPTIONAL otherwise. A PEP holding both may therefore omit the token and remain conformant, while an Independent Access Request Service requires it and rejects the submission. Two conformant implementations fail to interoperate.Recommendation
Name the inline binding claims, so the recommended form is usable across implementations.
Define a normative JWT subset and keep the general statement that
binding_tokenis opaque and format-flexible:iss,aud,exp, the binding representation (inline claims orbinding_hash), andbinding_context_memberswhen Context participates in the binding.iat,jti.evaluation_id, and deployment-specific claims.Make the PEP's echo unconditional: the PEP echoes every
denialmember the PDP supplied, unchanged. This changes the force of an existing rule, which is why it is a working-group decision rather than an editorial correction.Related
Once the claims are named, the illustrative tokens need correcting. Every
binding_tokenin the base draft and its companions decodes to correlation data alone, with noaud, whose absence a conformant service must reject, and nobinding_context_members. The base draft's token carries anevaluation_idonly, which the text says does not satisfy the independent-service requirement it is meant to illustrate. That is an editor task, not a decision for this issue.