From 9fb4e04ebae1329c2fb09a3c16c5fae444e1ae64 Mon Sep 17 00:00:00 2001 From: Paul Latzelsperger Date: Tue, 27 Aug 2024 11:38:10 +0200 Subject: [PATCH 1/2] docs: improve README --- README.md | 324 +++++++++++++++++++++------------- resources/data_setup.drawio | 44 +++++ resources/data_setup.png | Bin 0 -> 97811 bytes resources/participants.drawio | 75 ++++++++ resources/participants.png | Bin 0 -> 67271 bytes seed.sh | 2 +- 6 files changed, 324 insertions(+), 121 deletions(-) create mode 100644 resources/data_setup.drawio create mode 100644 resources/data_setup.png create mode 100644 resources/participants.drawio create mode 100644 resources/participants.png diff --git a/README.md b/README.md index 8efa1188..2eaebe3b 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,11 @@ * [3.1 Participants](#31-participants) * [3.2 Data setup](#32-data-setup) * [3.3 Access control](#33-access-control) + * [3.4 DIDs, participant lists and VerifiableCredentials](#34-dids-participant-lists-and-verifiablecredentials) * [4. Running the demo (inside IntelliJ)](#4-running-the-demo-inside-intellij) + * [4.1 Starting the runtimes](#41-starting-the-runtimes) + * [4.2 Seeding the dataspace](#42-seeding-the-dataspace) + * [4.3 Next steps](#43-next-steps) * [5. Running the Demo (Kubernetes)](#5-running-the-demo-kubernetes) * [5.1 Build the runtime images](#51-build-the-runtime-images) * [5.2 Create the K8S cluster](#52-create-the-k8s-cluster) @@ -41,17 +45,16 @@ ## 1. Introduction -The Decentralized Claims Protocols define a secure way how to participants in a dataspace can exchange and present +The Decentralized Claims Protocol defines a secure way how to participants in a dataspace can exchange and present credential information. In particular, the [DCP specification](https://github.com/eclipse-tractusx/identity-trust) -defines the _Presentation Flow_, which is the process of requesting and verifying Verifiable Credentials. +defines the _Presentation Flow_, which is the process of requesting, presenting and verifying Verifiable Credentials. So in order to get the most out of this demo, a basic understanding of VerifiableCredentials, VerifiablePresentations, -Decentralized Identifiers (DID) and -cryptography is necessary. These concepts will not be explained here further. +Decentralized Identifiers (DID) and cryptography is necessary. These concepts will not be explained here further. The Presentation Flow was adopted in the Eclipse Dataspace Components project and is currently implemented in modules -pertaining to the [Connector](https://github.com/eclipse-edc/connector) as well as -the [IdentityHub](https://github.com/eclipse-edc/IdentityHub). +pertaining to the [Connector](https://github.com/eclipse-edc/connector) as well as the +[IdentityHub](https://github.com/eclipse-edc/IdentityHub). ## 2. Purpose of this Demo @@ -60,103 +63,175 @@ exchange, for example requesting a catalog or negotiating a contract. It must be stated in the strongest terms that this is **NOT** a production grade installation, nor should any production-grade developments be based on it. [Shortcuts](#8-other-caveats-shortcuts-and-workarounds) were taken, and -assumptions -were made that are potentially invalid in other scenarios. +assumptions were made that are potentially invalid in other scenarios. It merely is a playground for developers wanting to kick the tires in the EDC and DCP space, and its purpose is to -demonstrate how DCP works to an -otherwise unassuming audience. +demonstrate how DCP works to an otherwise unassuming audience. ## 3. The Scenario -_In this example, we will see how two companies can share data through federated catalogs -using [Management Domains](https://github.com/eclipse-edc/Connector/blob/main/docs/developer/management-domains/management-domains.md)._ +_In this example, we will see how two companies can share data through federated catalogs using [Management +Domains](https://github.com/eclipse-edc/Connector/blob/main/docs/developer/management-domains/management-domains.md)._ ### 3.1 Participants -There are two fictitious companies, called "Provider Corp" and "Consumer Corp". "Consumer Corp" wants to -consume information from "Provider Corp". Furthermore, Provider Corp has two departments "Q&A" and "Manufacturing". -Both are independent and host their own EDC connectors dubbed "provider-qna" and "provider-manufacturing". Provider Corp -also hosts a catalog server, plus an IdentityHub that is shared between the catalog server, ""provider-qna"" -and "provider-manufacturing". This is necessary, because those three share the same `participantId`, and thus, the same -set of credentials. -A catalog server is a stripped-down EDC runtime, that only contains modules for servicing catalog requests. +There are two fictitious companies, called "Provider Corp" and "Consumer Corp". "Consumer Corp" wants to consume data +from "Provider Corp". Provider Corp has two departments "Q&A" and "Manufacturing". Both are independent and host their +own EDC connectors, named "provider-qna" and "provider-manufacturing". Both are administered individually, but don't +expose their data catalog directly to the internet. + +To make the catalogs available, Provider Corp also hosts a catalog server that is shared between the catalog server, +"provider-qna"" and "provider-manufacturing". + +Both Consumer Corp and Provider Corp operate an IdentityHub each. Note that This is necessary, because those three +share the same `participantId`, and thus, the same set of credentials. A catalog server is a stripped-down EDC runtime, +that only contains modules for servicing catalog requests. Consumer Corp has a connector plus its own IdentityHub. +![](./resources/participants.png) + ### 3.2 Data setup "provider-qna" and "provider-manufacturing" both have two data assets each, named `"asset-1"` and `"asset-2"` but neither "provider-qna" nor "provider-manufacturing" expose their catalog endpoint directly to the internet. Instead, the -catalog server (provider company) provides a catalog that contains special assets (think: pointers) to both " -provider-qna"'s and "provider-manufacturing"'s connectors. We call this a "root catalog", and the pointers are called " -catalog assets". This means, that by resolving the root catalog, and by following the links in it, "Consumer Corp" can -resolve the actual asset from "provider-qna" and "provider-manufacturing". +catalog server (of the Provider Corp) provides a catalog that contains special assets (think: pointers) to both " +provider-qna"'s and "provider-manufacturing"'s connectors, specifically, their DSP endpoints. + +We call this a "root catalog", and the pointers are called "catalog assets". This means, that by resolving the root +catalog, and by following the links therein, "Consumer Corp" can resolve the actual asset from "provider-qna" and +"provider-manufacturing". + +![](./resources/data_setup.png) + +Linked assets, or `CatalogAsset` objects are easily recognizable by the `"isCatalog": true` property. They do not +contain any metadata, only a link to service URL, where the actual asset is available. + +Note that the consumer connector does not contain any data assets in this scenario. ### 3.3 Access control -Both assets of "provider-qna" and "provider-manufacturing" have some access restrictions on them: +In this fictitious dataspace there are two types of VerifiableCredentials: + +- `MembershipCredential`: contains information about the holder's membership in the dataspace as well as some holder + information +- `DataProcessorCredential`: contains the version of the "Data Organization and Processing Edict (DOPE)" the holder has + signed and it attests to the "ability of the holder to process data at a certain level". The following levels exist: + - `"processing"`: means, the holder can process non-sensitive data + - `"sensitive"`: means, the holder has undergone "some very highly secure vetting process" and can process sensitive + data + + The information about the level of data a holder can process is stored in the `credentialSubject` of the + DataProcessorCredential. -- `asset-1`: requires a membership credential to view and a Data Processor credential with `"level": "processing"` to +Both assets of "provider-qna" and "provider-manufacturing" have some access restrictions on their assets: + +- `asset-1`: requires a MembershipCredential to view and a DataProcessorCredential with `"level": "processing"` to negotiate a contract and transfer data -- `asset-2`: requires a membership credential to view and a Data Processor credential with a `"level": "sensitive"` to +- `asset-2`: requires a MembershipCredential to view and a DataProcessorCredential with a `"level": "sensitive"` to negotiate a contract -These requirements are formulated as EDC policies. In addition, it is a dataspace rule that -the `MembershipCredential` must be presented in _every_ request. This credential attests that the holder is a member of -the dataspace. +These requirements are formulated as EDC policies: + +```json +{ + "policy": { + "@type": "http://www.w3.org/ns/odrl/2/Set", + "odrl:obligation": [ + { + "odrl:action": "use", + "odrl:constraint": { + "@type": "LogicalConstraint", + "odrl:leftOperand": "DataAccess.level", + "odrl:operator": { + "@id": "odrl:eq" + }, + "odrl:rightOperand": "processing" + } + } + ] + } +} +``` -In this fictitious dataspace, the DataProcessorCredential attests to the "ability of the holder to process data at a -certain level". The following levels exist: +In addition, it is a dataspace rule that the `MembershipCredential` must be presented in _every_ DSP request. This +credential attests that the holder is a member of the dataspace. -- `"processing"`: means, the holder can process non-sensitive data -- `"sensitive"`: means, the holder has undergone "some very highly secure vetting process" and can process sensitive - data +All participants of the dataspace are in possession of the `MembershipCredential` as well as a `DataProcessorCredential` +with level `"processing"`. -The information about the level of data a holder can process is stored in the `credentialSubject` of the -DataProcessorCredential. +> None possess the `DataProcessorCredential` with level="sensitive". -All participants of the dataspace are in possession of the `MembershipCredential` as well as -a `DataProcessorCredential` with level `"processing"`. -_None possess the `DataProcessorCredential` with level="sensitive"_. That means that no contract for `asset-2` can be -negotiated. For the purposes of this demo the VerifiableCredentials are pre-created and are seeded to the participants' -credential storage ([no issuance](#83-no-issuance-yet)). +That means that no contract for `asset-2` can be negotiated by anyone. For the purposes of this demo the +VerifiableCredentials are pre-created and are seeded directly to the participants' credential storage ([no +issuance](#83-no-issuance-yet)) via a dedicated +[extension](launchers/identity-hub/src/main/java/org/eclipse/edc/demo/dcp/ih/IdentityHubExtension.java). -If the consumer wants to view the consolidated catalog (containing assets from the provider's Q&A and manufacturing -departments), then negotiate a contract for an asset, and then transfer the asset, she needs to present several -credentials: +When the consumer wants to inspect the consolidated catalog (containing assets from both the provider's Q&A and +manufacturing departments), then negotiate a contract for an asset, and then transfer the asset, several credentials +need to be presented: - catalog request: present `MembershipCredential` -- contract negotiation: `MembershipCredential` and `DataProcessorCredential(level=processing)` - or `DataProcessorCredential(level=sensitive)`, respectively +- contract negotiation: `MembershipCredential` and `DataProcessorCredential(level=processing)` or + `DataProcessorCredential(level=sensitive)`, respectively - transfer process: `MembershipCredential` +### 3.4 DIDs, participant lists and VerifiableCredentials + +Participant Identifiers in MVD are Web-DIDs. They are used to identify the holder of a VC, to reference public key +material and to tell the FederatedCatalog Crawlers whom to crawl. DID documents contain important endpoint information, +namely the connector's DSP endpoint and it's CredentialService endpoint. That means that all relevant information about +participants can be gathered simply by resolving and inspecting its DID document. + +One caveat is that with `did:web` DIDs there is a direct coupling between the identifier and the URL. The `did:web:xyz` +identifier directly translates to the URL where the document is resolvable. + +In the context of MVD this means that different DIDs have to be used when running from within IntelliJ versus running in +Kubernetes, since the URLs are different. As a consequence, for every VerifiableCredential there are two variants, one +that contains the "localhost" DID and one that contains the DID with the Kubernetes service URL. Also, the participant +lists are different between those two. + + ## 4. Running the demo (inside IntelliJ) +> Please note that due to the way how Windows handles file paths, running the IntelliJ Run Configs on Windows can +> sometimes cause problems. We recommend either running this from within WSL or on a Linux machine. Alternatively, paths +> could be corrected manually. Running MVD natively on Windows is not supported! + There are several run configurations for IntelliJ in the `.run/` folder. One each for the consumer and provider connectors runtimes and IdentityHub runtimes plus one for the provider catalog server, and one named "dataspace". The latter is a compound run config an brings up all other runtimes together. +### 4.1 Starting the runtimes + The connector runtimes contain both the controlplane and the dataplane. Note that in a real-world scenario those would -likely be separate runtimes to be able to scale them differently. Note also, that the [Kubernetes deployment]() does -indeed run them as separate pods. +likely be separate runtimes to be able to scale and deploy them individually. Note also, that the Kubernetes deployment +(next chapter) does indeed run them as separate pods. + +The run configs use the `temurin-22` JDK. If you don't have it installed already, you can choose to install it (IntelliJ +makes this really easy), or to select whatever JDK you have available in each run config. + +All run configs take their configuration from `*.env` files which are located in `deployment/assets/env`. -However, with `did:web` documents there is a tight coupling between DID and URL, so we can't easily re-use the -same DIDs. +### 4.2 Seeding the dataspace -DID documents are dynamically generated when "seeding" the data, specifically when creating the `ParticipantContext`s -in IdentityHub. This is automatically being done by a script `seed.sh`. +DID documents are dynamically generated when "seeding" the data, specifically when creating the `ParticipantContext` +objects in IdentityHub. This is automatically being done by a script `seed.sh`. -After executing the `dataspace` run config in Intellij, be sure to **execute the `seed.sh` script after all the -runtimes have started**. Omitting to do so will leave the dataspace in an uninitialized state and cause all +After executing the `dataspace` run config in Intellij, be sure to **execute the `seed.sh` script after all the runtimes +have started**. Omitting to do so will leave the dataspace in an uninitialized state and cause all connector-to-connector communication to fail. -All REST requests made from the script are available in -the [Postman collection](./deployment/postman/MVD.postman_collection.json). -With the [HTTP Client](https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html) -and [Import from Postman Collections](https://plugins.jetbrains.com/plugin/22438-import-from-postman-collections) -plugins, the Postman collection can be imported and then executed by means of the -[environment file](./deployment/postman/http-client.env.json), selecting the "Local" environment. +### 4.3 Next steps + +All REST requests made from the script are available in the [Postman +collection](./deployment/postman/MVD.postman_collection.json). With the [HTTP +Client](https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html) and [Import from Postman +Collections](https://plugins.jetbrains.com/plugin/22438-import-from-postman-collections) plugins, the Postman collection +can be imported and then executed by means of the [environment file](./deployment/postman/http-client.env.json), +selecting the "Local" environment. + +Please read [chapter 6](#6-executing-rest-requests-using-postman) for details. ## 5. Running the Demo (Kubernetes) @@ -175,6 +250,9 @@ following tools are installed and readily available: All commands are executed from the **repository's root folder** unless stated otherwise via `cd` commands. +> Since this is not a production deployment, all applications are deployed _in the same cluster_ and in the same +> namespace, plainly for the sake of simplicity. + ### 5.1 Build the runtime images ```shell @@ -182,15 +260,17 @@ All commands are executed from the **repository's root folder** unless stated ot ./gradlew -Ppersistence=true dockerize ``` -this builds the runtime images and creates the following docker -images: `controlplane:latest`, `dataplane:latest`, `catalog-server:latest` -and `identity-hub:latest` in the local docker image cache. Note the `-Ppersistence` flag which puts the HashiCorp Vault -module and PostgreSQL persistence modules on the classpath. These obviously require additional configuration, which is -handled by the Terraform scripts. +this builds the runtime images and creates the following docker images: `controlplane:latest`, `dataplane:latest`, +`catalog-server:latest` and `identity-hub:latest` in the local docker image cache. Note the `-Ppersistence` flag which +puts the HashiCorp Vault module and PostgreSQL persistence modules on the runtime classpath. + +> This demo will not work properly, if the `-Ppersistence=true` flag is omitted! + +PostgreSQL and Hashicorp Vault obviously require additional configuration, which is handled by the Terraform scripts. ### 5.2 Create the K8S cluster -After the runtime images are built, we bring up and configure the Kubernetes Cluster. We are using KinD here, but this +After the runtime images are built, we bring up and configure the Kubernetes cluster. We are using KinD here, but this should work similarly well on other cluster runtimes, such as MicroK8s, K3s or Minikube. Please refer to the respective documentation for more information. @@ -273,12 +353,16 @@ Create provider participant ZGlkOndlYjpib2ItaWRlbnRpdHlodWIlM0E3MDgzOmJvYg==.wBgVb44W6oi3lXlmeYsH6Xt3FAVO1g295W734jivUo5PKop6fpFsdXO4vC9D4I0WvqfB/cARJ+FVjjyFSIewew==% ``` -_Note the `node` warnings are harmless and can be ignored_ +_the `node` warnings are harmless and can be ignored_ + +> Failing to run the seed script will leave the dataspace in an uninitialized state and cause all connector-to-connector +> communication to fail. ## 6. Executing REST requests using Postman -This demos comes with a Postman collection located in `deployment/postman`. Be aware that the collection has -different sets of variables in different environments, "MVD local development" and "MVD K8S". +This demo comes with a Postman collection located in `deployment/postman`. Be aware that the collection has different +sets of variables in different environments, "MVD local development" and "MVD K8S". These are located in the same +directory and must be imported into Postman too. The collection itself is pretty self-explanatory, it allows you to request a catalog, perform a contract negotiation and execute a data transfer. @@ -288,8 +372,8 @@ The following sequence must be observed: ### 6.1 Get the catalog to get the dataspace catalog across all participants, execute `ControlPlane Management/Get Cached Catalog`. Note that it -takes a few seconds for the consumer connector to collect all entries. -Watch out for a dataset entry named `asset-1` similar to this: +takes a few seconds for the consumer connector to collect all entries. Watch out for a dataset entry named `asset-1` +similar to this: ```json { @@ -342,10 +426,9 @@ Important: copy the `@id` value of the `odrl:hasPolicy`, we'll need that to init ### 6.2 Initiate the contract negotiation -From the previous step we have the `odrl:hasPolicy.@id` value, that should look something -like `bWVtYmVyLWFuZC1wY2YtZGVm:YXNzZXQtMQ==:MThhNTgwMzEtNjE3Zi00N2U2LWFlNjMtMTlkZmZlMjA5NDE4`. -This value must now be copied into the `policy.@id` field of the `ControlPlane Management/Initiate Negotiation` request -of the Postman collection: +From the previous step we have the `odrl:hasPolicy.@id` value, that should look something like +`bWVtYmVyLWFuZC1wY2YtZGVm:YXNzZXQtMQ==:MThhNTgwMzEtNjE3Zi00N2U2LWFlNjMtMTlkZmZlMjA5NDE4`. This value must now be copied +into the `policy.@id` field of the `ControlPlane Management/Initiate Negotiation` request of the Postman collection: ```json //... @@ -377,8 +460,8 @@ contract negotiations. Once the state shows `FINALIZED`, we copy the value of th ### 6.4 Initiate data transfer -From the previous step we have the `contractAgreementId` value `3fb08a81-62b4-46fb-9a40-c574ec437759`. In -the `ControlPlane Management/Initiate Transfer` request we will paste that into the `contractId` field: +From the previous step we have the `contractAgreementId` value `3fb08a81-62b4-46fb-9a40-c574ec437759`. In the +`ControlPlane Management/Initiate Transfer` request we will paste that into the `contractId` field: ```json { @@ -406,8 +489,8 @@ query the consumer's EDR endpoint to obtain the token. ### 6.6 Get EndpointDataReference Using the `ControlPlane Management/Get Cached EDRs` request, we fetch the EDR and note down the value of the `@id` -field, for example `392d1767-e546-4b54-ab6e-6fb20a3dc12a`. This should be identical to the value of -the `transferProcessId` field. +field, for example `392d1767-e546-4b54-ab6e-6fb20a3dc12a`. This should be identical to the value of the +`transferProcessId` field. With that value, we can obtain the access token for this particular EDR. @@ -438,9 +521,9 @@ Note that the token was abbreviated for legibility. ### 6.8 Fetch data -Using the endpoint and the authorization token from the previous step, we can then download data using -the `ControlPlane Management/Download Data from Public API` request. To do that, the token must be copied into the -request's `Authorization` header. +Using the endpoint and the authorization token from the previous step, we can then download data using the `ControlPlane +Management/Download Data from Public API` request. To do that, the token must be copied into the request's +`Authorization` header. Important: do not prepend a `bearer` prefix! @@ -448,21 +531,21 @@ This will return some dummy JSON data. ## 7. Custom extensions in MVD -EDC is not a turn-key application, rather it is a generic set of modules, that have to be configured, customized -and extended to fit the needs of any particular dataspace. +EDC is not a turn-key application, rather it is a set of modules, that have to be configured, customized and extended to +fit the needs of any particular dataspace. -For our demo dataspace there are a several extensions that are required. These can generally be found in -the `extensions/` directory, or directly in the `src/main/java` folder of the launcher. +For our demo dataspace there are a several extensions that are required. These can generally be found in the +`extensions/` directory, or directly in the `src/main/java` folder of the launcher module. ### 7.1 Catalog Node Resolver -Out-of-the-box the FederatedCatalog comes with an in-memory implementation of the `TargetNodeDirectory`. -A `TargetNodeDirectory` is a high-level list of participants of the dataspace, a "phone book" if you will. In MVD that +Out-of-the-box the FederatedCatalog comes with an in-memory implementation of the `TargetNodeDirectory`. A +`TargetNodeDirectory` is a high-level list of participants of the dataspace, a "phone book" if you will. In MVD that phone book is constituted by a hard-coded [file](./deployment/assets/participants), where every participant is listed with their DID. -To keep things simple, MVD comes with a -custom [implementation](extensions/catalog-node-resolver/src/main/java/org/eclipse/edc/demo/participants/resolver/LazyLoadNodeDirectory.java) +To keep things simple, MVD comes with a custom +[implementation](extensions/catalog-node-resolver/src/main/java/org/eclipse/edc/demo/participants/resolver/LazyLoadNodeDirectory.java) for those participant directory files. Everything we need such as DSP URLs, public keys, CredentialService URLs is resolved from the DID document. @@ -470,21 +553,20 @@ Everything we need such as DSP URLs, public keys, CredentialService URLs is reso ### 7.2 Default scope mapping function As per our [dataspace rules](#33-access-control), every DSP request has to be secured by presenting the Membership -credential, even the Catalog request. -In detail, this means, that every DSP request that the consumer sends, must carry a token in the Authorization header, -which authorizes the verifier to obtain the MembershipCredential from the consumer's IdentityHub. - -We achieve this by intercepting the DSP request and adding the correct scope - -here: `"org.eclipse.edc.vc.type:MembershipCredential:read"` - to the request builder. Technically, this is achieved by -registering a `postValidator` function for the relevant policy scopes, check out -the [DcpPatchExtension.java](extensions/dcp-impl/src/main/java/org/eclipse/edc/demo/dcp/core/DcpPatchExtension.java) -class. +credential, even the Catalog request. In detail, this means, that every DSP request that the consumer sends, must carry +a token in the Authorization header, which authorizes the verifier to obtain the MembershipCredential from the +consumer's IdentityHub. + +We achieve this by intercepting the DSP request and adding the correct scope - here: +`"org.eclipse.edc.vc.type:MembershipCredential:read"` - to the request builder. Technically, this is achieved by +registering a `postValidator` function for the relevant policy scopes, check out the +[DcpPatchExtension.java](extensions/dcp-impl/src/main/java/org/eclipse/edc/demo/dcp/core/DcpPatchExtension.java) class. ### 7.3 Scope extractor for `DataProcessor` credentials When the consumer wants to negotiate a contract for an offer, that has a `DataAccess.level` constraint, it must add the -relevant scope string to the access token upon DSP egress. A policy, that requires the consumer to present -a `DataProcessorCredential`, where the access level is `processing` would look like this: +relevant scope string to the access token upon DSP egress. A policy, that requires the consumer to present a +`DataProcessorCredential`, where the access level is `processing` would look like this: ```json { @@ -505,7 +587,8 @@ a `DataProcessorCredential`, where the access level is `processing` would look l } ``` -The [DataAccessCredentialScopeExtractor.java](extensions/dcp-impl/src/main/java/org/eclipse/edc/demo/dcp/core/DataAccessCredentialScopeExtractor.java) +The +[DataAccessCredentialScopeExtractor.java](extensions/dcp-impl/src/main/java/org/eclipse/edc/demo/dcp/core/DataAccessCredentialScopeExtractor.java) class would convert this into a scope string `org.eclipse.edc.vc.type:DataProcessorCredential:read` and add it to the consumer's access token. @@ -519,13 +602,13 @@ Since our dataspace defines two credential types, which can be used in policies, #### 7.4.1 Membership evaluation function This function is used to evaluate Membership constraints in policies by asserting that the Membership credential is -present, is not expired and the membership is in force. This is implemented in -the [MembershipCredentialEvaluationFunction.java](extensions/dcp-impl/src/main/java/org/eclipse/edc/demo/dcp/policy/MembershipCredentialEvaluationFunction.java). +present, is not expired and the membership is in force. This is implemented in the +[MembershipCredentialEvaluationFunction.java](extensions/dcp-impl/src/main/java/org/eclipse/edc/demo/dcp/policy/MembershipCredentialEvaluationFunction.java). #### 7.4.2 DataAccessLevel evaluation function -Similarly, to evaluate `DataAccess.level` constraints, there is -a [DataAccessLevelFunction.java](extensions/dcp-impl/src/main/java/org/eclipse/edc/demo/dcp/policy/DataAccessLevelFunction.java) +Similarly, to evaluate `DataAccess.level` constraints, there is a +[DataAccessLevelFunction.java](extensions/dcp-impl/src/main/java/org/eclipse/edc/demo/dcp/policy/DataAccessLevelFunction.java) class, that asserts that a DataProcessor credential is present, and that the level is appropriate. Note that to do that, the function implementation needs to have knowledge about the shape and schema of the `credentialSubject` of the DataProcessor VC. @@ -535,23 +618,24 @@ DataProcessor VC. ### 7.5 Scope-to-criterion transformer When IdentityHub receives a Presentation query, that carries an access token, it must be able to convert a scope string -into a filter expression, for example `org.eclipse.edc.vc.type:DataProcessorCredential:read` is converted -into `verifiableCredential.credential.type = DataProcessorCredential`. This filter expression is then used by -IdentityHub to query for `DataProcessorCredentials` in the database. +into a filter expression, for example `org.eclipse.edc.vc.type:DataProcessorCredential:read` is converted into +`verifiableCredential.credential.type = DataProcessorCredential`. This filter expression is then used by IdentityHub to +query for `DataProcessorCredentials` in the database. -This is implemented in -the [MvdScopeTransformer.java](launchers/identity-hub/src/main/java/org/eclipse/edc/demo/dcp/ih/MvdScopeTransformer.java) +This is implemented in the +[MvdScopeTransformer.java](launchers/identity-hub/src/main/java/org/eclipse/edc/demo/dcp/ih/MvdScopeTransformer.java) class. ### 7.6 Super-user seeding -IdentityHub's [Identity API](https://github.com/eclipse-edc/IdentityHub/blob/main/docs/developer/architecture/identityhub-apis.md#identity-api) +IdentityHub's [Identity +API](https://github.com/eclipse-edc/IdentityHub/blob/main/docs/developer/architecture/identityhub-apis.md#identity-api) is secured with a basic RBAC system. For this, there is a special role called the `"super-user"`. Creating participants must be done using this role, but unless this role exists, we can't create any participants... so we are facing a bit of a chicken-and-egg problem. -This is why seeding the "super-user" is done directly from code using -the [ParticipantContextSeedExtension.java](extensions/superuser-seed/src/main/java/org/eclipse/edc/identityhub/seed/ParticipantContextSeedExtension.java). +This is why seeding the "super-user" is done directly from code using the +[ParticipantContextSeedExtension.java](extensions/superuser-seed/src/main/java/org/eclipse/edc/identityhub/seed/ParticipantContextSeedExtension.java). If a "super-user" does not already exist, one is created in the database using defaults. Feel free to override the defaults and customize your "super-user" and find out what breaks :) @@ -578,16 +662,16 @@ The Kubernetes deployment uses both persistent storage (PostgreSQL) and secure v Every participant hosts their DIDs in their IdentityHubs, which means, that the HTTP-URL that the DID maps to must be accessible for all other participants. For example, every participant pod in the cluster must be able to resolve a DID from every other participant. For access to pods from outside the cluster we would be using an ingress controller, but -then the other pods in the cluster cannot access it, due to missing DNS entries. -That means, that the DID cannot use the _ingress URL_, but must use the _service's_ URL. A service in turn is not -accessible from outside the cluster, so DIDs are only resolvable from _inside_ the cluster. Unfortunately, there is no -way around this, unless we put DIDs on a publicly resolvable CDN or webserver. +then the other pods in the cluster cannot access it, due to missing DNS entries. That means, that the DID cannot use the +_ingress URL_, but must use the _service's_ URL. A service in turn is not accessible from outside the cluster, so DIDs +are only resolvable from _inside_ the cluster. Unfortunately, there is no way around this, unless we put DIDs on a +publicly resolvable CDN or webserver. #### 8.2.2 `did:example` for the dataspace credential issuer The "dataspace issuer" does not exist as participant yet, so instead of deploying a fake IdentityHub, we opted for -introducing the (completely made up) `"did:example"` method, for which there is -a [custom-built DID resolver](extensions/did-example-resolver/src/main/java/org/eclipse/edc/iam/identitytrust/core/DidExampleResolver.java) +introducing the (completely made up) `"did:example"` method, for which there is a [custom-built DID +resolver](extensions/did-example-resolver/src/main/java/org/eclipse/edc/iam/identitytrust/core/DidExampleResolver.java) in the code. ### 8.3 No issuance (yet) diff --git a/resources/data_setup.drawio b/resources/data_setup.drawio new file mode 100644 index 00000000..131053ab --- /dev/null +++ b/resources/data_setup.drawio @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/data_setup.png b/resources/data_setup.png new file mode 100644 index 0000000000000000000000000000000000000000..1d51cfe4261d75c69bb67298c6a334892db58dbb GIT binary patch literal 97811 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�%EC4hhzmu_74c3s7oC;H|*`B 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 K?K$zu-Y>htsR3bURfb&Tst_c#&b*5CDf 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

dG(EzcU}tkA|(8jMP>>Y9Gd?ydk@O#j!!fm_9 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 Ud=Bwv!U2C&6>p + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/participants.png b/resources/participants.png new file mode 100644 index 0000000000000000000000000000000000000000..d09400bc2f3ead319aecfe053d43f8f09da249fb GIT binary patch literal 67271 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 e@M}2D^q=3fRD0EQP8&-GAn Date: Tue, 27 Aug 2024 14:01:38 +0200 Subject: [PATCH 2/2] adapt to latest EDC changes (data plane IAM) --- build.gradle.kts | 5 ----- gradle.properties | 7 +++---- gradle/libs.versions.toml | 1 + launchers/dataplane/build.gradle.kts | 1 + .../edc/demo/tests/transfer/TransferEndToEndTest.java | 2 +- 5 files changed, 6 insertions(+), 10 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 5df4bd3d..a9370bb5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -28,7 +28,6 @@ buildscript { } } -val metaModelVersion: String by project val annotationProcessorVersion: String by project allprojects { @@ -41,10 +40,6 @@ allprojects { } configure { - versions { - // override default dependency versions here - metaModel.set(metaModelVersion) - } swagger { title.set("Identity HUB REST API") description = "Identity HUB REST APIs - merged by OpenApiMerger" diff --git a/gradle.properties b/gradle.properties index d1f5d63a..359cbeda 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,5 @@ group=org.eclipse.edc -version=0.8.1-SNAPSHOT +version=0.8.2-SNAPSHOT -edcGradlePluginsVersion=0.8.1-SNAPSHOT -annotationProcessorVersion=0.8.1-SNAPSHOT -metaModelVersion=0.8.1-SNAPSHOT +edcGradlePluginsVersion=0.8.2-SNAPSHOT +annotationProcessorVersion=0.8.2-SNAPSHOT diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6b2c9e0e..5fec1ddc 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -92,6 +92,7 @@ edc-dataplane-http-oauth2 = { module = "org.eclipse.edc:data-plane-http-oauth2", edc-dataplane-api-control = { module = "org.eclipse.edc:data-plane-control-api", version.ref = "edc" } edc-dataplane-api-public = { module = "org.eclipse.edc:data-plane-public-api-v2", version.ref = "edc" } edc-dataplane-api-signaling = { module = "org.eclipse.edc:data-plane-signaling-api", version.ref = "edc" } +edc-dataplane-iam = { module = "org.eclipse.edc:data-plane-iam", version.ref = "edc" } # EDC Postgres modules diff --git a/launchers/dataplane/build.gradle.kts b/launchers/dataplane/build.gradle.kts index b206447d..158650a4 100644 --- a/launchers/dataplane/build.gradle.kts +++ b/launchers/dataplane/build.gradle.kts @@ -30,6 +30,7 @@ dependencies { runtimeOnly(libs.edc.dataplane.api.control) runtimeOnly(libs.edc.dataplane.api.public) runtimeOnly(libs.edc.dataplane.api.signaling) + runtimeOnly(libs.edc.dataplane.iam) runtimeOnly(libs.edc.ext.jsonld) // needed by the DataPlaneSignalingApi runtimeOnly(libs.edc.dpf.selector.client) // for the selector service -> self registration diff --git a/tests/end2end/src/test/java/org/eclipse/edc/demo/tests/transfer/TransferEndToEndTest.java b/tests/end2end/src/test/java/org/eclipse/edc/demo/tests/transfer/TransferEndToEndTest.java index e683f70c..cbe3d216 100644 --- a/tests/end2end/src/test/java/org/eclipse/edc/demo/tests/transfer/TransferEndToEndTest.java +++ b/tests/end2end/src/test/java/org/eclipse/edc/demo/tests/transfer/TransferEndToEndTest.java @@ -150,7 +150,7 @@ void transferData_hasPermission_shouldTransferData() { .findFirst() .orElse(null); }).toList(); - assertThat(offerIdsFiltered).hasSize(1); + assertThat(offerIdsFiltered).hasSize(1).doesNotContainNull(); var oid = offerIdsFiltered.get(0); assertThat(oid).isNotNull(); offerId.set(oid);