Skip to content

Commit

Permalink
update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
paullatzelsperger committed Oct 25, 2024
1 parent 06b7871 commit 4bf0328
Showing 1 changed file with 102 additions and 49 deletions.
151 changes: 102 additions & 49 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,56 +1,58 @@
# Minimum Viable Dataspace Demo

<!-- TOC -->

* [Minimum Viable Dataspace Demo](#minimum-viable-dataspace-demo)
* [1. Introduction](#1-introduction)
* [2. Purpose of this Demo](#2-purpose-of-this-demo)
* [3. The Scenario](#3-the-scenario)
* [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)
* [5.3 Seed the dataspace](#53-seed-the-dataspace)
* [5.4 Debugging MVD in Kubernetes](#54-debugging-mvd-in-kubernetes)
* [6. Differences between Kubernetes and IntelliJ](#6-differences-between-kubernetes-and-intellij)
* [6.1 In-memory databases](#61-in-memory-databases)
* [6.2 Memory-based secret vaults](#62-memory-based-secret-vaults)
* [6.3 Embedded vs Remote STS](#63-embedded-vs-remote-sts)
* [7. Executing REST requests using Postman](#7-executing-rest-requests-using-postman)
* [7.1 Get the catalog](#71-get-the-catalog)
* [7.2 Initiate the contract negotiation](#72-initiate-the-contract-negotiation)
* [7.3 Query negotiation status](#73-query-negotiation-status)
* [7.4 Initiate data transfer](#74-initiate-data-transfer)
* [7.5 Query data transfers](#75-query-data-transfers)
* [7.6 Get EndpointDataReference](#76-get-endpointdatareference)
* [7.7 Get access token for EDR](#77-get-access-token-for-edr)
* [7.8 Fetch data](#78-fetch-data)
* [8. Custom extensions in MVD](#8-custom-extensions-in-mvd)
* [8.1 Catalog Node Resolver](#81-catalog-node-resolver)
* [8.2 Default scope mapping function](#82-default-scope-mapping-function)
* [8.3 Scope extractor for `DataProcessor` credentials](#83-scope-extractor-for-dataprocessor-credentials)
* [8.4 Policy evaluation functions](#84-policy-evaluation-functions)
* [8.4.1 Membership evaluation function](#841-membership-evaluation-function)
* [8.4.2 DataAccessLevel evaluation function](#842-dataaccesslevel-evaluation-function)
* [8.5 Scope-to-criterion transformer](#85-scope-to-criterion-transformer)
* [8.6 Super-user seeding](#86-super-user-seeding)
* [9. Advanced topics](#9-advanced-topics)
* [9.1 Regenerating issuer keys](#91-regenerating-issuer-keys)
* [9.2 Regenerating participant keys](#92-regenerating-participant-keys)
* [9.2.1 IntelliJ deployment:](#921-intellij-deployment)
* [9.2.2 Kubernetes deployment](#922-kubernetes-deployment)
* [10. Other caveats, shortcuts and workarounds](#10-other-caveats-shortcuts-and-workarounds)
* [10.1 In-memory stores in local deployment](#101-in-memory-stores-in-local-deployment)
* [10.2 DID resolution](#102-did-resolution)
* [10.2.1 `did:web` for participants](#1021-didweb-for-participants)
* [10.2.2 `did:web` for the dataspace issuer](#1022-didweb-for-the-dataspace-issuer)
* [10.3 No issuance (yet)](#103-no-issuance-yet)
* [1. Introduction](#1-introduction)
* [2. Purpose of this Demo](#2-purpose-of-this-demo)
* [3. The Scenario](#3-the-scenario)
* [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)
* [5.3 Seed the dataspace](#53-seed-the-dataspace)
* [5.4 Debugging MVD in Kubernetes](#54-debugging-mvd-in-kubernetes)
* [6. Differences between Kubernetes and IntelliJ](#6-differences-between-kubernetes-and-intellij)
* [6.1 In-memory databases](#61-in-memory-databases)
* [6.2 Memory-based secret vaults](#62-memory-based-secret-vaults)
* [6.3 Embedded vs Remote STS](#63-embedded-vs-remote-sts)
* [7. Executing REST requests using Postman](#7-executing-rest-requests-using-postman)
* [7.1 Get the catalog](#71-get-the-catalog)
* [7.2 Initiate the contract negotiation](#72-initiate-the-contract-negotiation)
* [7.3 Query negotiation status](#73-query-negotiation-status)
* [7.4 Initiate data transfer](#74-initiate-data-transfer)
* [7.5 Query data transfers](#75-query-data-transfers)
* [7.6 Get EndpointDataReference](#76-get-endpointdatareference)
* [7.7 Get access token for EDR](#77-get-access-token-for-edr)
* [7.8 Fetch data](#78-fetch-data)
* [8. Custom extensions in MVD](#8-custom-extensions-in-mvd)
* [8.1 Catalog Node Resolver](#81-catalog-node-resolver)
* [8.2 Default scope mapping function](#82-default-scope-mapping-function)
* [8.3 Scope extractor for `DataProcessor` credentials](#83-scope-extractor-for-dataprocessor-credentials)
* [8.4 Policy evaluation functions](#84-policy-evaluation-functions)
* [8.4.1 Membership evaluation function](#841-membership-evaluation-function)
* [8.4.2 DataAccessLevel evaluation function](#842-dataaccesslevel-evaluation-function)
* [8.5 Scope-to-criterion transformer](#85-scope-to-criterion-transformer)
* [8.6 Super-user seeding](#86-super-user-seeding)
* [9. Advanced topics](#9-advanced-topics)
* [9.1 Regenerating issuer keys](#91-regenerating-issuer-keys)
* [9.2 Regenerating participant keys](#92-regenerating-participant-keys)
* [9.2.1 IntelliJ deployment:](#921-intellij-deployment)
* [9.2.2 Kubernetes deployment](#922-kubernetes-deployment)
* [10. Other caveats, shortcuts and workarounds](#10-other-caveats-shortcuts-and-workarounds)
* [10.1 In-memory stores in local deployment](#101-in-memory-stores-in-local-deployment)
* [10.2 DID resolution](#102-did-resolution)
* [10.2.1 `did:web` for participants](#1021-didweb-for-participants)
* [10.2.2 `did:web` for the dataspace issuer](#1022-didweb-for-the-dataspace-issuer)
* [10.3 No issuance (yet)](#103-no-issuance-yet)

<!-- TOC -->

## 1. Introduction
Expand Down Expand Up @@ -208,6 +210,57 @@ There are several run configurations for IntelliJ in the `.run/` folder. One eac
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 Start NGINX

The issuer's DID document is hosted on NGINX, so the easiest way of running NGINX is with a docker container:

```shell
docker run -d --name nginx -p 9876:80 --rm \
-v ${PWD}/deployment/assets/issuer/nginx.conf:/etc/nginx/nginx.conf:ro \
-v ${PWD}/deployment/assets/issuer/did.docker.json:/var/www/.well-known/did.json:ro \
nginx
```

To verify that it worked, please execute `curl -X GET http://localhost:9876/.well-known/did.json` and see if it returns
a
DID document as JSON structure:

```json
{
"service": [],
"verificationMethod": [
{
"id": "did:web:localhost%3A9876#key-1",
"type": "JsonWebKey2020",
"controller": "did:web:localhost%3A9876",
"publicKeyMultibase": null,
"publicKeyJwk": {
"kty": "OKP",
"crv": "Ed25519",
"x": "Hsq2QXPbbsU7j6JwXstbpxGSgliI04g_fU3z2nwkuVc"
}
}
],
"authentication": [
"key-1"
],
"id": "did:web:localhost%3A9876",
"@context": [
"https://www.w3.org/ns/did/v1",
{
"@base": "did:web:localhost%3A9876"
}
]
}
```

The port mapping is **important**, because it influences the DID of the issuer: with a host port of
`9876` the issuer DID resolves to `did:web:localhost%3A9876`. Changing the port mapping changes the DID, soif you change
the port mapping, be sure to execute a search-and-replace!

Naturally, you are free to install NGINX natively on your computer or use any other webserver altogether, but this won't
be supported by us.

### 4.1 Starting the runtimes

The connector runtimes contain both the controlplane and the dataplane. Note that in a real-world scenario those would
Expand Down

0 comments on commit 4bf0328

Please sign in to comment.