Hi TJ,
I think you cann do a small change/extension to our code and it will behave like described in your case.
We have the EvaluationContext which is ported through the whole evaluation process.
He is responsible for holding the obligations which are found during the evaluation.
See:
http://dev.herasaf.org/source/browse/XACMLCORE/trunk/src/main/java/org/herasaf/xacml/core/context/EvaluationContext.java?r=HEADSo here is my suggestion. Add your own RuleCombiningAlgorithms or overwrite ours.
Then there you have access to the rules during evaluation.
Have a look at:
http://dev.herasaf.org/source/browse/XACMLCORE/trunk/src/main/java/org/herasaf/xacml/core/combiningAlgorithm/rule/impl/RuleDenyOverridesAlgorithm.java?r=HEAD#l125That is our RuleDenyOverridesAlgorithm. You can see there from line 115 to 179 how we deal with the rules.
I think that's the point where you should hook in.
There you could just create a new obligation and add it to the EvaluationContext.
Below I posted some pseudo code.
ObligationType yourNewObligation = new ObligationType();
yourNewObligation.setId("your:urn");
yourNewObligation.set.....;
evaluationContext.getObligations().getObligations().add(yourNewObligation);
ObligationsType:
http://dev.herasaf.org/source/browse/XACMLCORE/trunk/src/main/java/org/herasaf/xacml/core/policy/impl/ObligationsType.java?r=HEADObligationType:
http://dev.herasaf.org/source/browse/XACMLCORE/trunk/src/main/java/org/herasaf/xacml/core/policy/impl/ObligationType.java?r=HEADI hope that helps or gives you a hint. Maybe you can have a try and tell us how it's working.
If you have further questions just post again. Feel free to discuss your implementation ideas with us.
Regards,
René