eclipse-tractusx / tractusx-edc

Apache License 2.0
37 stars 53 forks source link

FrameworkAgreement Policy is not evaluated #1261

Closed tom-rm-meyer-ISST closed 5 months ago

tom-rm-meyer-ISST commented 5 months ago

Describe the bug

A clear and concise description of what the bug is.

To Reproduce

  1. Create a Contract Offer with the following Contract Policy
{
    "@context": {
        "@vocab": "https://w3id.org/edc/v0.0.1/ns/",
        "odrl": "http://www.w3.org/ns/odrl/2/",
        "cx-policy": "https://w3id.org/catenax/policy/"
    },
    "@type": "PolicyDefinitionRequestDto",
    "@id": "{{CONTRACT_POLICY_ID}}",
    "profile": "cx-policy:profile2405",
    "policy": {
        "@type": "odrl:Set",
        "odrl:permission" : [{
            "odrl:action" : "odrl:use",
            "odrl:constraint" : {
                "@type": "LogicalConstraint",
                "odrl:leftOperand": "https://w3id.org/catenax/policy/FrameworkAgreement",
                "odrl:operator": {
                    "@id": "odrl:eq"
                },
                "odrl:rightOperand": "traceability:1.0"
                }
            }
        ]
    }
}
  1. Negotiate the Contract

I got a mock dim that has the following request including the Credendial for Framework Agreement:

{
  "@context":[
    "https://identity.foundation/presentation-exchange/submission/v1",
    "https://w3id.org/tractusx-trust/v0.8"
  ],
  "@type":"PresentationQueryMessage",
  "scope":[
    "org.eclipse.tractusx.vc.type:MembershipCredential:read",
    "org.eclipse.tractusx.vc.type:TraceabilityCredential:read"
  ]
}

And my mock responds only with a Membership VC

{
  "@context":[
    "https://w3id.org/tractusx-trust/v0.8"
  ],
  "@type":"PresentationResponseMessage",
  "presentation":[
    "eyJhbGciOiJFUzI1NiIsImtpZCI6ImRpZDp3ZWI6ZWRyLXNlcnZpY2UvdHJ1c3RlZC1pc3N1ZXIja2V5MSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJkaWQ6d2ViOmVkci1zZXJ2aWNlL3RydXN0ZWQtaXNzdWVyIiwic3ViIjoiZGlkOndlYjplZHItc2VydmljZS9zdXBwbGllciIsImF1ZCI6ImRpZDp3ZWI6ZWRyLXNlcnZpY2UvY3VzdG9tZXIiLCJuYmYiOjE1NDE0OTM3MjQsImlhdCI6MTU0MTQ5MzcyNCwiZXhwIjozMjQ4MTcxODEzMywidnAiOnsiQGNvbnRleHQiOlsiaHR0cHM6Ly93d3cudzMub3JnLzIwMTgvY3JlZGVudGlhbHMvdjEiLCJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy9leGFtcGxlcy92MSJdLCJ0eXBlIjpbIlZlcmlmaWFibGVQcmVzZW50YXRpb24iLCJDcmVkZW50aWFsTWFuYWdlclByZXNlbnRhdGlvbiJdLCJ2ZXJpZmlhYmxlQ3JlZGVudGlhbCI6WyJleUpoYkdjaU9pSkZVekkxTmlJc0ltdHBaQ0k2SW1ScFpEcDNaV0k2WldSeUxYTmxjblpwWTJVdmRISjFjM1JsWkMxcGMzTjFaWElqYTJWNU1TSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnBjM01pT2lKa2FXUTZkMlZpT21Wa2NpMXpaWEoyYVdObEwzUnlkWE4wWldRdGFYTnpkV1Z5SWl3aWMzVmlJam9pWkdsa09uZGxZanBsWkhJdGMyVnlkbWxqWlM5MGNuVnpkR1ZrTFdsemMzVmxjaUlzSW1GMVpDSTZJbVJwWkRwM1pXSTZaV1J5TFhObGNuWnBZMlV2WTNWemRHOXRaWElpTENKdVltWWlPakUxTkRFME9UTTNNalFzSW1saGRDSTZNVFUwTVRRNU16Y3lOQ3dpWlhod0lqb3pNalE0TVRjeE9ERXpNeXdpZG1NaU9uc2lRR052Ym5SbGVIUWlPbHNpYUhSMGNITTZMeTkzZDNjdWR6TXViM0puTHpJd01UZ3ZZM0psWkdWdWRHbGhiSE12ZGpFaUxDSm9kSFJ3Y3pvdkwzY3phV1F1YjNKbkwzTmxZM1Z5YVhSNUwzTjFhWFJsY3k5cWQzTXRNakF5TUM5Mk1TSXNJbWgwZEhCek9pOHZkek5wWkM1dmNtY3ZZMkYwWlc1aGVDOWpjbVZrWlc1MGFXRnNjeUlzSW1oMGRIQnpPaTh2ZHpOcFpDNXZjbWN2ZG1NdmMzUmhkSFZ6TFd4cGMzUXZNakF5TVM5Mk1TSmRMQ0pwWkNJNkluTnZiV1V0YVdSbGJuUnBabWxsY2lJc0ltbHpjM1ZsY2lJNkltUnBaRHAzWldJNlpXUnlMWE5sY25acFkyVXZkSEoxYzNSbFpDMXBjM04xWlhJaUxDSnBjM04xWVc1alpVUmhkR1VpT2lJeU1ESXhMVEEyTFRFMlZERTRPalUyT2pVNVdpSXNJblI1Y0dVaU9sc2lWbVZ5YVdacFlXSnNaVU55WldSbGJuUnBZV3dpTENKTlpXMWlaWEp6YUdsd1EzSmxaR1Z1ZEdsaGJDSmRMQ0pqY21Wa1pXNTBhV0ZzVTNWaWFtVmpkQ0k2ZXlKMGVYQmxJam9pVFdWdFltVnljMmhwY0VOeVpXUmxiblJwWVd3aUxDSnBaQ0k2SW1ScFpEcDNaV0k2WldSeUxYTmxjblpwWTJVdmRISjFjM1JsWkMxcGMzTjFaWElpTENKb2IyeGtaWEpKWkdWdWRHbG1hV1Z5SWpvaVFsQk9UREV5TXpRMU5qYzRPVEJhV2lKOWZYMC5faEJfVEtjYUFMdmRiTy1pU3JiZ0xLU2lMUVVvVy1vUDdoRFUzckJ6aE0tbUF3MUViRjRTWUg0MlotcXVUWTFmR2o0UnlDcWtlSHczV3lWblowZW5DQSJdfX0.dUWAqNJRapghE7xIRzBmH9QZwAw7XwllFKJ3QLsW1_qlLtEmqlyT9hjLpkzvVi1TAha0OFjAMMi999Gam7II1w"
  ]
}

Expected behavior

Negotiation should fail as the VP does not contain the FrameworkAgreement Credential.

Screenshots/Error Messages

If applicable, add screenshots and/or error messages to help explain your problem.

Context Information

Add any other context or information about the problem here.

Possible Implementation

You already know the root cause of the erroneous state and how to fix it? Feel free to share your thoughts.

Seems like evaluation of this class is not triggered.

Discussion on matrix

tom-rm-meyer-ISST commented 5 months ago

My bad. Following contract definition is evaluated:

{
    "@context": {
        "@vocab": "https://w3id.org/edc/v0.0.1/ns/",
        "odrl": "http://www.w3.org/ns/odrl/2/",
        "cx-policy": "https://w3id.org/catenax/policy/"
    },
    "@type": "PolicyDefinitionRequestDto",
    "@id": "{{CONTRACT_POLICY_ID}}",
    "profile": "cx-policy:profile2405",
    "policy": {
        "@type": "odrl:Set",
        "odrl:permission" : [{
            "odrl:action" : {
                              "@id": "odrl:use" // <-- object not just property value
                         },
            "odrl:constraint" : {
                "@type": "LogicalConstraint",
                "odrl:leftOperand": "https://w3id.org/catenax/policy/FrameworkAgreement",
                "odrl:operator": {
                    "@id": "odrl:eq"
                },
                "odrl:rightOperand": "traceability:1.0"
                }
            }
        ]
    }
}