diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 4d12dbe0c..5f5e29995 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -74,6 +74,13 @@ jobs:
java-version: '11'
distribution: 'adopt'
cache: 'maven'
+ -
+ name: Init git submodule
+ run: git submodule update --init
+ -
+ name: Build edc with Gradle to get specific snapshot
+ run: ./gradlew publishToMavenLocal -Pskip.signing=true -PedcVersion=0.0.1-20220902-SNAPSHOT
+ working-directory: edc
-
name: Cache SonarCloud packages
uses: actions/cache@v3
@@ -128,6 +135,13 @@ jobs:
distribution: 'adopt'
cache: 'maven'
# Build
+ -
+ name: Init git submodule
+ run: git submodule update --init
+ -
+ name: Build edc with Gradle to get specific snapshot
+ run: ./gradlew publishToMavenLocal -Pskip.signing=true -PedcVersion=0.0.1-20220902-SNAPSHOT
+ working-directory: edc
-
name: Build Controlplane
run: |-
@@ -210,6 +224,13 @@ jobs:
distribution: 'adopt'
cache: 'maven'
# Build
+ -
+ name: Init git submodule
+ run: git submodule update --init
+ -
+ name: Build edc with Gradle to get specific snapshot
+ run: ./gradlew publishToMavenLocal -Pskip.signing=true -PedcVersion=0.0.1-20220902-SNAPSHOT
+ working-directory: edc
-
name: Build Dataplane
run: |-
diff --git a/.github/workflows/business-tests.yaml b/.github/workflows/business-tests.yaml
index de3287130..0932f6b6a 100644
--- a/.github/workflows/business-tests.yaml
+++ b/.github/workflows/business-tests.yaml
@@ -69,6 +69,13 @@ jobs:
##############################################
### Build and load recent images into KinD ###
##############################################
+ -
+ name: Init git submodule
+ run: git submodule update --init
+ -
+ name: Build edc with Gradle to get specific snapshot
+ run: ./gradlew publishToMavenLocal -Pskip.signing=true -PedcVersion=0.0.1-20220902-SNAPSHOT
+ working-directory: edc
-
name: Build edc-controlplane-postgresql-hashicorp-vault
run: |-
diff --git a/.github/workflows/checkov.yaml b/.github/workflows/checkov.yaml
deleted file mode 100644
index f1f2004d6..000000000
--- a/.github/workflows/checkov.yaml
+++ /dev/null
@@ -1,52 +0,0 @@
----
-name: "Checkov"
-
-on:
- workflow_dispatch:
- push:
- branches:
- - main
- - develop
- tags:
- - '[0-9]+.[0-9]+.[0-9]+'
- paths-ignore:
- - '**'
- - '!deployment/helm/**'
- pull_request:
- branches:
- - '*'
- paths-ignore:
- - '**'
- - '!deployment/helm/**'
-
-jobs:
- analyze:
- runs-on: ubuntu-latest
- permissions:
- actions: read
- contents: read
- security-events: write
- name: checkov-action
- steps:
- -
- name: Checkout repo
- uses: actions/checkout@master
- -
- name: Run Checkov action
- id: checkov
- uses: bridgecrewio/checkov-action@master
- with:
- directory: deployment/helm
- quiet: true # optional: display only failed checks
- soft_fail: false # optional: do not return an error code if there are failed checks
- framework: helm # optional: run only on a specific infrastructure {cloudformation,terraform,kubernetes,all}
- output_format: sarif # optional: the output format, one of: cli, json, junitxml, github_failed_only, or sarif. Default: sarif
- download_external_modules: true # optional: download external terraform modules from public git repositories and terraform registry
- log_level: DEBUG # optional: set log level. Default WARNING
- config_file: checkov.yaml
- -
- name: Upload Checkov scan results to GitHub Security tab
- uses: github/codeql-action/upload-sarif@v2
- if: always()
- with:
- sarif_file: "results.sarif"
diff --git a/.github/workflows/draft-new-release.yaml b/.github/workflows/draft-new-release.yaml
index 056c0a026..7e3096349 100644
--- a/.github/workflows/draft-new-release.yaml
+++ b/.github/workflows/draft-new-release.yaml
@@ -43,7 +43,7 @@ jobs:
GITHUB_PACKAGE_PASSWORD: ${{ secrets.CXNG_GHCR_PAT }}
-
name: Bump version in deployment/helm
- uses: mikefarah/yq@v4.27.2
+ uses: mikefarah/yq@v4.27.3
with:
cmd: |-
find deployment/helm -name Chart.yaml | xargs -n1 yq -i '.appVersion = "${{ github.event.inputs.version }}" | .version = "${{ github.event.inputs.version }}"'
diff --git a/.github/workflows/kics.yaml b/.github/workflows/kics.yaml
new file mode 100644
index 000000000..4430f4512
--- /dev/null
+++ b/.github/workflows/kics.yaml
@@ -0,0 +1,42 @@
+name: "KICS"
+
+on:
+ push:
+ branches: [main, master, develop]
+ pull_request:
+ branches: [main, master, develop]
+ workflow_dispatch:
+
+ schedule:
+ - cron: "0 0 * * *"
+
+jobs:
+ analyze:
+ name: Analyze
+ runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ contents: read
+ security-events: write
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: KICS scan
+ uses: checkmarx/kics-github-action@master
+ with:
+ path: "."
+ fail_on: high
+ disable_secrets: true
+ output_path: kicsResults/
+ output_formats: "json,sarif"
+ exclude_queries: "fd54f200-402c-4333-a5a4-36ef6709af2f,b03a748a-542d-44f4-bb86-9199ab4fd2d5"
+ # Excluded queries are:
+ # fd54f200-402c-4333-a5a4-36ef6709af2f Missing User Instruction
+ # b03a748a-542d-44f4-bb86-9199ab4fd2d5 Healthcheck Instruction Missing
+
+ - name: Upload SARIF file for GitHub Advanced Security Dashboard
+ if: always()
+ uses: github/codeql-action/upload-sarif@v2
+ with:
+ sarif_file: kicsResults/results.sarif
diff --git a/.github/workflows/publish-new-release.yml b/.github/workflows/publish-new-release.yml
index 9b2cb9a34..4d5a3f6d0 100644
--- a/.github/workflows/publish-new-release.yml
+++ b/.github/workflows/publish-new-release.yml
@@ -74,6 +74,13 @@ jobs:
java-version: '11'
distribution: 'adopt'
cache: 'maven'
+ -
+ name: Init git submodule
+ run: git submodule update --init
+ -
+ name: Build edc with Gradle to get specific snapshot
+ run: ./gradlew publishToMavenLocal -Pskip.signing=true -PedcVersion=0.0.1-20220902-SNAPSHOT
+ working-directory: edc
-
name: Deploy
run: |-
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 65ed55142..5a4429ff6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [0.1.1] - 2022-09-04
+
+**Important Note**: Please consolidate the migration documentation before updating your connector. [documentation](/docs/migration/Version_0.0.x_0.1.x.md).
+
+### Added
+
+- Control-Plane Extension ([cx-oauth2](/edc-extensions/cx-oauth2/README.md))
+
+### Changed
+
+- Introduced git submodule to import EDC dependencies (instead of snapshot- or milestone artifact)
+- Helm Charts: TLS secret name is now configurable
+
+### Fixed
+
+- Connectors with Azure Vault extension are now starting again [link](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/issues/1892)
+
## [0.1.0] - 2022-08-19
**Important Note**: Version 0.1.0 introduces multiple breaking changes. Before updating **always** consolidate the
@@ -79,7 +96,9 @@ corresponding [documentation](/docs/migration/Version_0.0.x_0.1.x.md).
## [0.0.1] - 2022-05-13
-[Unreleased]: https://github.com/catenax-ng/product-edc/compare/0.1.0...HEAD
+[Unreleased]: https://github.com/catenax-ng/product-edc/compare/0.1.1...HEAD
+
+[0.1.1]: https://github.com/catenax-ng/product-edc/compare/0.1.0...0.1.1
[0.1.0]: https://github.com/catenax-ng/product-edc/compare/0.0.6...0.1.0
diff --git a/deployment/helm/edc-controlplane/Chart.yaml b/deployment/helm/edc-controlplane/Chart.yaml
index 2a778fb17..d81685edc 100644
--- a/deployment/helm/edc-controlplane/Chart.yaml
+++ b/deployment/helm/edc-controlplane/Chart.yaml
@@ -5,6 +5,6 @@ description: >-
EDC Control-Plane - The Eclipse DataSpaceConnector administration layer with responsibility of resource management and govern contracts and data transfers
home: https://github.com/catenax-ng/product-edc/deployment/helm/edc-controlplane
type: application
-appVersion: "0.1.0"
-version: 0.1.0
+appVersion: "0.1.1"
+version: 0.1.1
maintainers: []
diff --git a/deployment/helm/edc-controlplane/README.md b/deployment/helm/edc-controlplane/README.md
index ff1b785c8..46e933039 100644
--- a/deployment/helm/edc-controlplane/README.md
+++ b/deployment/helm/edc-controlplane/README.md
@@ -1,6 +1,6 @@
# edc-controlplane
-![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.1.0](https://img.shields.io/badge/AppVersion-0.1.0-informational?style=flat-square)
+![Version: 0.1.1](https://img.shields.io/badge/Version-0.1.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.1.1](https://img.shields.io/badge/AppVersion-0.1.1-informational?style=flat-square)
EDC Control-Plane - The Eclipse DataSpaceConnector administration layer with responsibility of resource management and govern contracts and data transfers
@@ -9,7 +9,7 @@ EDC Control-Plane - The Eclipse DataSpaceConnector administration layer with res
## TL;DR
```shell
$ helm repo add catenax-ng-product-edc https://catenax-ng.github.io/product-edc
-$ helm install my-release catenax-ng-product-edc/edc-controlplane --version 0.1.0
+$ helm install my-release catenax-ng-product-edc/edc-controlplane --version 0.1.1
```
## Values
@@ -51,7 +51,9 @@ $ helm install my-release catenax-ng-product-edc/edc-controlplane --version 0.1.
| ingresses[0].enabled | bool | `true` | |
| ingresses[0].endpoints | list | `["ids"]` | EDC endpoints exposed by this ingress resource |
| ingresses[0].hostname | string | `"edc-controlplane.local"` | The hostname to be used to precisely map incoming traffic onto the underlying network service |
-| ingresses[0].tls | bool | `false` | Enables TLS on the ingress resource |
+| ingresses[0].tls | object | `{"enabled":false,"secretName":""}` | TLS [tls class](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls) applied to the ingress resource |
+| ingresses[0].tls.enabled | bool | `false` | Enables TLS on the ingress resource |
+| ingresses[0].tls.secretName | string | `""` | If present overwrites the default secret name |
| ingresses[1].annotations | object | `{}` | Additional ingress annotations to add |
| ingresses[1].certManager.clusterIssuer | string | `""` | If preset enables certificate generation via cert-manager cluster-wide issuer |
| ingresses[1].certManager.issuer | string | `""` | If preset enables certificate generation via cert-manager namespace scoped issuer |
@@ -59,7 +61,9 @@ $ helm install my-release catenax-ng-product-edc/edc-controlplane --version 0.1.
| ingresses[1].enabled | bool | `false` | |
| ingresses[1].endpoints | list | `["data","control"]` | EDC endpoints exposed by this ingress resource |
| ingresses[1].hostname | string | `"edc-controlplane.intranet"` | The hostname to be used to precisely map incoming traffic onto the underlying network service |
-| ingresses[1].tls | bool | `false` | Enables TLS on the ingress resource |
+| ingresses[1].tls | object | `{"enabled":false,"secretName":""}` | TLS [tls class](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls) applied to the ingress resource |
+| ingresses[1].tls.enabled | bool | `false` | Enables TLS on the ingress resource |
+| ingresses[1].tls.secretName | string | `""` | If present overwrites the default secret name |
| livenessProbe.enabled | bool | `true` | Whether to enable kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) |
| logging.properties | string | `".level=INFO\norg.eclipse.dataspaceconnector.level=ALL\nhandlers=java.util.logging.ConsoleHandler\njava.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter\njava.util.logging.ConsoleHandler.level=ALL\njava.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n"` | EDC logging.properties configuring the [java.util.logging subsystem](https://docs.oracle.com/javase/7/docs/technotes/guides/logging/overview.html#a1.8) |
| nameOverride | string | `""` | Overrides the charts name |
diff --git a/deployment/helm/edc-controlplane/templates/ingress.yaml b/deployment/helm/edc-controlplane/templates/ingress.yaml
index e2586a7fc..b61ff47d9 100644
--- a/deployment/helm/edc-controlplane/templates/ingress.yaml
+++ b/deployment/helm/edc-controlplane/templates/ingress.yaml
@@ -42,11 +42,15 @@ spec:
ingressClassName: {{ .className }}
{{- end }}
{{- if .hostname }}
- {{- if .tls }}
+ {{- if .tls.enabled }}
tls:
- hosts:
- {{ .hostname }}
+ {{- if .tls.secretName }}
+ secretName: {{ .tls.secretName }}
+ {{- else }}
secretName: {{ $ingressName }}-tls
+ {{- end }}
{{- end }}
rules:
- host: {{ .hostname }}
diff --git a/deployment/helm/edc-controlplane/values.yaml b/deployment/helm/edc-controlplane/values.yaml
index b1605e6fd..249e3d4dd 100644
--- a/deployment/helm/edc-controlplane/values.yaml
+++ b/deployment/helm/edc-controlplane/values.yaml
@@ -147,8 +147,12 @@ ingresses:
- ids
# -- Defines the [ingress class](https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class) to use
className: ""
- # -- Enables TLS on the ingress resource
- tls: false
+ # -- TLS [tls class](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls) applied to the ingress resource
+ tls:
+ # -- Enables TLS on the ingress resource
+ enabled: false
+ # -- If present overwrites the default secret name
+ secretName: ""
## Adds [cert-manager](https://cert-manager.io/docs/) annotations to the ingress resource
certManager:
# -- If preset enables certificate generation via cert-manager namespace scoped issuer
@@ -168,8 +172,12 @@ ingresses:
- control
# -- Defines the [ingress class](https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class) to use
className: ""
- # -- Enables TLS on the ingress resource
- tls: false
+ # -- TLS [tls class](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls) applied to the ingress resource
+ tls:
+ # -- Enables TLS on the ingress resource
+ enabled: false
+ # -- If present overwrites the default secret name
+ secretName: ""
## Adds [cert-manager](https://cert-manager.io/docs/) annotations to the ingress resource
certManager:
# -- If preset enables certificate generation via cert-manager namespace scoped issuer
diff --git a/deployment/helm/edc-dataplane/Chart.yaml b/deployment/helm/edc-dataplane/Chart.yaml
index 93da28bc0..e9d513ff4 100644
--- a/deployment/helm/edc-dataplane/Chart.yaml
+++ b/deployment/helm/edc-dataplane/Chart.yaml
@@ -5,6 +5,6 @@ description: >-
EDC Data-Plane - The Eclipse DataSpaceConnector data layer with responsibility of transferring and receiving data streams
home: https://github.com/catenax-ng/product-edc/deployment/helm/edc-dataplane
type: application
-appVersion: "0.1.0"
-version: 0.1.0
+appVersion: "0.1.1"
+version: 0.1.1
maintainers: []
diff --git a/deployment/helm/edc-dataplane/README.md b/deployment/helm/edc-dataplane/README.md
index 485383fe4..fbedf9dec 100644
--- a/deployment/helm/edc-dataplane/README.md
+++ b/deployment/helm/edc-dataplane/README.md
@@ -1,6 +1,6 @@
# edc-dataplane
-![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.1.0](https://img.shields.io/badge/AppVersion-0.1.0-informational?style=flat-square)
+![Version: 0.1.1](https://img.shields.io/badge/Version-0.1.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.1.1](https://img.shields.io/badge/AppVersion-0.1.1-informational?style=flat-square)
EDC Data-Plane - The Eclipse DataSpaceConnector data layer with responsibility of transferring and receiving data streams
@@ -9,7 +9,7 @@ EDC Data-Plane - The Eclipse DataSpaceConnector data layer with responsibility o
## TL;DR
```shell
$ helm repo add catenax-ng-product-edc https://catenax-ng.github.io/product-edc
-$ helm install my-release catenax-ng-product-edc/edc-dataplane --version 0.1.0
+$ helm install my-release catenax-ng-product-edc/edc-dataplane --version 0.1.1
```
## Values
@@ -23,7 +23,7 @@ $ helm install my-release catenax-ng-product-edc/edc-dataplane --version 0.1.0
| autoscaling.minReplicas | int | `1` | Minimal replicas if resource consumption falls below resource threshholds |
| autoscaling.targetCPUUtilizationPercentage | int | `80` | targetAverageUtilization of cpu provided to a pod |
| autoscaling.targetMemoryUtilizationPercentage | int | `80` | targetAverageUtilization of memory provided to a pod |
-| configuration.properties | string | `"# edc.atomikos.checkpoint.interval=\n# edc.atomikos.directory=\n# edc.atomikos.logging=\n# edc.atomikos.threaded2pc=\n# edc.atomikos.timeout=\n# edc.aws.access.key=\n# edc.aws.provision.retry.retries.max=\n# edc.aws.provision.role.duration.session.max=\n# edc.aws.secret.access.key=\n# edc.blobstore.endpoint=\n# edc.dataplane.token.validation.endpoint=\n# edc.core.retry.backoff.max=\n# edc.core.retry.backoff.min=\n# edc.core.retry.retries.max=\n# edc.core.system.health.check.liveness-period=\n# edc.core.system.health.check.readiness-period=\n# edc.core.system.health.check.startup-period=\n# edc.core.system.health.check.threadpool-size=\n# edc.dataplane.queue.capacity=\n# edc.dataplane.wait=\n# edc.dataplane.workers=\n# edc.datasource.asset.name=\"default\"\n# edc.datasource.contractdefinition.name=\"default\"\n# edc.datasource.contractnegotiation.name=\"default\"\n# edc.datasource.policy.name=\"default\"\n# edc.datasource.transferprocess.name=\"default\"\n# edc.datasource.default.pool.maxIdleConnections=\n# edc.datasource.default.pool.maxTotalConnections=\n# edc.datasource.default.pool.minIdleConnections=\n# edc.datasource.default.pool.testConnectionOnBorrow=\n# edc.datasource.default.pool.testConnectionOnCreate=\n# edc.datasource.default.pool.testConnectionOnReturn=\n# edc.datasource.default.pool.testConnectionWhileIdle=\n# edc.datasource.default.pool.testQuery=\n# edc.datasource.default.url=\n# edc.datasource.default.user=\n# edc.datasource.default.password=\n# edc.dpf.selector.url=\n# edc.events.topic.endpoint=\n# edc.events.topic.name=\n# edc.fs.config=\n# edc.hostname=\n# edc.identity.did.url=\n# edc.ids.catalog.id=\n# edc.ids.curator=\n# edc.ids.description=\n# edc.ids.endpoint=\n# edc.ids.id=\n# edc.ids.maintainer=\n# edc.ids.security.profile=\n# edc.ids.title=\n# edc.ids.validation.referringconnector=\n# edc.ion.crawler.did-type=\n# edc.ion.crawler.interval-minutes=\n# edc.ion.crawler.ion.url=\n# edc.metrics.enabled=\n# edc.metrics.executor.enabled=\n# edc.metrics.jersey.enabled=\n# edc.metrics.jetty.enabled=\n# edc.metrics.okhttp.enabled=\n# edc.metrics.system.enabled=\n# edc.negotiation.consumer.state-machine.batch-size=\n# edc.negotiation.provider.state-machine.batch-size=\n# edc.oauth.client.id=\n# edc.oauth.private.key.alias=\n# edc.oauth.provider.audience=\n# edc.oauth.provider.jwks.refresh=\n# edc.oauth.provider.jwks.url=\n# edc.oauth.public.key.alias=\n# edc.oauth.token.url=\n# edc.oauth.validation.nbf.leeway=\n# edc.receiver.http.auth-code=\n# edc.receiver.http.auth-key=\n# edc.receiver.http.endpoint=\n# edc.transfer.functions.check.endpoint=\n# edc.transfer.functions.enabled.protocols=\n# edc.transfer.functions.transfer.endpoint=\n# edc.transfer-process-store.database.name=\n# edc.transfer.state-machine.batch-size=\n# edc.vault=\n# edc.vault.certificate=\n# edc.vault.clientid=\n# edc.vault.clientsecret=\n# edc.vault.name=\n# edc.vault.tenantid=\n# edc.vault.hashicorp.url=\n# edc.vault.hashicorp.token=\n# edc.vault.hashicorp.timeout.seconds=\n# edc.webdid.doh.url=\n# edc.web.rest.cors.enabled=\n# edc.web.rest.cors.headers=\n# edc.web.rest.cors.methods=\n# edc.web.rest.cors.origins="` | EDC configuration.properties configuring aspects of the [eclipse-dataspaceconnector](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector) |
+| configuration.properties | string | `"# edc.atomikos.checkpoint.interval=\n# edc.atomikos.directory=\n# edc.atomikos.logging=\n# edc.atomikos.threaded2pc=\n# edc.atomikos.timeout=\n# edc.aws.access.key=\n# edc.aws.provision.retry.retries.max=\n# edc.aws.provision.role.duration.session.max=\n# edc.aws.secret.access.key=\n# edc.blobstore.endpoint=\n# edc.dataplane.token.validation.endpoint=\n# edc.core.retry.backoff.max=\n# edc.core.retry.backoff.min=\n# edc.core.retry.retries.max=\n# edc.core.system.health.check.liveness-period=\n# edc.core.system.health.check.readiness-period=\n# edc.core.system.health.check.startup-period=\n# edc.core.system.health.check.threadpool-size=\n# edc.dataplane.queue.capacity=\n# edc.dataplane.wait=\n# edc.dataplane.workers=\n# edc.datasource.asset.name=\"default\"\n# edc.datasource.contractdefinition.name=\"default\"\n# edc.datasource.contractnegotiation.name=\"default\"\n# edc.datasource.policy.name=\"default\"\n# edc.datasource.transferprocess.name=\"default\"\n# edc.datasource.default.pool.maxIdleConnections=\n# edc.datasource.default.pool.maxTotalConnections=\n# edc.datasource.default.pool.minIdleConnections=\n# edc.datasource.default.pool.testConnectionOnBorrow=\n# edc.datasource.default.pool.testConnectionOnCreate=\n# edc.datasource.default.pool.testConnectionOnReturn=\n# edc.datasource.default.pool.testConnectionWhileIdle=\n# edc.datasource.default.pool.testQuery=\n# edc.datasource.default.url=\n# edc.datasource.default.user=\n# edc.datasource.default.password=\n# edc.dpf.selector.url=\n# edc.events.topic.endpoint=\n# edc.events.topic.name=\n# edc.fs.config=\n# edc.hostname=\n# edc.identity.did.url=\n# edc.ids.catalog.id=\n# edc.ids.curator=\n# edc.ids.description=\n# edc.ids.endpoint=\n# edc.ids.endpoint.audience=\n# edc.ids.id=\n# edc.ids.maintainer=\n# edc.ids.security.profile=\n# edc.ids.title=\n# edc.ids.validation.referringconnector=\n# edc.ion.crawler.did-type=\n# edc.ion.crawler.interval-minutes=\n# edc.ion.crawler.ion.url=\n# edc.metrics.enabled=\n# edc.metrics.executor.enabled=\n# edc.metrics.jersey.enabled=\n# edc.metrics.jetty.enabled=\n# edc.metrics.okhttp.enabled=\n# edc.metrics.system.enabled=\n# edc.negotiation.consumer.state-machine.batch-size=\n# edc.negotiation.provider.state-machine.batch-size=\n# edc.oauth.client.id=\n# edc.oauth.private.key.alias=\n# edc.oauth.provider.jwks.refresh=\n# edc.oauth.provider.jwks.url=\n# edc.oauth.public.key.alias=\n# edc.oauth.token.url=\n# edc.oauth.validation.nbf.leeway=\n# edc.receiver.http.auth-code=\n# edc.receiver.http.auth-key=\n# edc.receiver.http.endpoint=\n# edc.transfer.functions.check.endpoint=\n# edc.transfer.functions.enabled.protocols=\n# edc.transfer.functions.transfer.endpoint=\n# edc.transfer-process-store.database.name=\n# edc.transfer.state-machine.batch-size=\n# edc.vault=\n# edc.vault.certificate=\n# edc.vault.clientid=\n# edc.vault.clientsecret=\n# edc.vault.name=\n# edc.vault.tenantid=\n# edc.vault.hashicorp.url=\n# edc.vault.hashicorp.token=\n# edc.vault.hashicorp.timeout.seconds=\n# edc.webdid.doh.url=\n# edc.web.rest.cors.enabled=\n# edc.web.rest.cors.headers=\n# edc.web.rest.cors.methods=\n# edc.web.rest.cors.origins="` | EDC configuration.properties configuring aspects of the [eclipse-dataspaceconnector](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector) |
| edc.endpoints.control.path | string | `"/api/dataplane/control"` | The path mapping the "control" api is going to be exposed by |
| edc.endpoints.control.port | string | `"9999"` | The network port, which the "control" api is going to be exposed by the container, pod and service |
| edc.endpoints.default.path | string | `"/api"` | The path mapping the "default" api is going to be exposed by |
@@ -47,7 +47,9 @@ $ helm install my-release catenax-ng-product-edc/edc-dataplane --version 0.1.0
| ingresses[0].enabled | bool | `true` | |
| ingresses[0].endpoints | list | `["public"]` | EDC endpoints exposed by this ingress resource |
| ingresses[0].hostname | string | `"edc-dataplane.local"` | The hostname to be used to precisely map incoming traffic onto the underlying network service |
-| ingresses[0].tls | bool | `false` | Enables TLS on the ingress resource |
+| ingresses[0].tls | object | `{"enabled":false,"secretName":""}` | TLS [tls class](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls) applied to the ingress resource |
+| ingresses[0].tls.enabled | bool | `false` | Enables TLS on the ingress resource |
+| ingresses[0].tls.secretName | string | `""` | If present overwrites the default secret name |
| livenessProbe.enabled | bool | `true` | Whether to enable kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) |
| logging.properties | string | `".level=INFO\norg.eclipse.dataspaceconnector.level=ALL\nhandlers=java.util.logging.ConsoleHandler\njava.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter\njava.util.logging.ConsoleHandler.level=ALL\njava.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n"` | EDC logging.properties configuring the [java.util.logging subsystem](https://docs.oracle.com/javase/7/docs/technotes/guides/logging/overview.html#a1.8) |
| nameOverride | string | `""` | Overrides the charts name |
diff --git a/deployment/helm/edc-dataplane/templates/ingress.yaml b/deployment/helm/edc-dataplane/templates/ingress.yaml
index 77a815083..8401c0760 100644
--- a/deployment/helm/edc-dataplane/templates/ingress.yaml
+++ b/deployment/helm/edc-dataplane/templates/ingress.yaml
@@ -42,11 +42,15 @@ spec:
ingressClassName: {{ .className }}
{{- end }}
{{- if .hostname }}
- {{- if .tls }}
+ {{- if .tls.enabled }}
tls:
- hosts:
- {{ .hostname }}
+ {{- if .tls.secretName }}
+ secretName: {{ .tls.secretName }}
+ {{- else }}
secretName: {{ $ingressName }}-tls
+ {{- end }}
{{- end }}
rules:
- host: {{ .hostname }}
diff --git a/deployment/helm/edc-dataplane/values.yaml b/deployment/helm/edc-dataplane/values.yaml
index 48d18fb96..03e8ea4e8 100644
--- a/deployment/helm/edc-dataplane/values.yaml
+++ b/deployment/helm/edc-dataplane/values.yaml
@@ -135,8 +135,12 @@ ingresses:
- public
# -- Defines the [ingress class](https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class) to use
className: ""
- # -- Enables TLS on the ingress resource
- tls: false
+ # -- TLS [tls class](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls) applied to the ingress resource
+ tls:
+ # -- Enables TLS on the ingress resource
+ enabled: false
+ # -- If present overwrites the default secret name
+ secretName: ""
## Adds [cert-manager](https://cert-manager.io/docs/) annotations to the ingress resource
certManager:
# -- If preset enables certificate generation via cert-manager namespace scoped issuer
@@ -254,6 +258,7 @@ configuration:
# edc.ids.curator=
# edc.ids.description=
# edc.ids.endpoint=
+ # edc.ids.endpoint.audience=
# edc.ids.id=
# edc.ids.maintainer=
# edc.ids.security.profile=
@@ -272,7 +277,6 @@ configuration:
# edc.negotiation.provider.state-machine.batch-size=
# edc.oauth.client.id=
# edc.oauth.private.key.alias=
- # edc.oauth.provider.audience=
# edc.oauth.provider.jwks.refresh=
# edc.oauth.provider.jwks.url=
# edc.oauth.public.key.alias=
diff --git a/docs/README.md b/docs/README.md
index aeb3e9d6d..b5bb8d338 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -13,22 +13,22 @@ The three supported setups are.
- Setup 1: In Memory & Azure Vault
- [Control Plane](../edc-controlplane/edc-controlplane-memory/README.md)
- - [IDS DAPS Extensions](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/iam/daps)
+ - [IDS DAPS Extensions](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/common/iam/oauth2/daps)
- In Memory Persistence done by using no extension
- - [Azure Key Vault Extension](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/azure/vault)
+ - [Azure Key Vault Extension](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/common/vault/azure-vault)
- [Data Plane](../edc-dataplane/edc-dataplane-azure-vault/README.md)
- - [Azure Key Vault Extension](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/azure/vault)
+ - [Azure Key Vault Extension](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/common/vault/azure-vault)
- Setup 2: PostgreSQL & Azure Vault
- [Control Plane](../edc-controlplane/edc-controlplane-postgresql/README.md)
- - [IDS DAPS Extensions](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/iam/daps)
- - [PostgreSQL Persistence Extensions](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql)
- - [Azure Key Vault Extension](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/azure/vault)
+ - [IDS DAPS Extensions](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/common/iam/oauth2/daps)
+ - [PostgreSQL Persistence Extensions](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql)
+ - [Azure Key Vault Extension](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/common/vault/azure-vault)
- [Data Plane](../edc-dataplane/edc-dataplane-azure-vault/README.md)
- - [Azure Key Vault Extension](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/azure/vault)
+ - [Azure Key Vault Extension](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/common/vault/azure-vault)
- Setup 3: PostgreSQL & HashiCorp Vault
- [Control Plane](../edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md)
- - [IDS DAPS Extensions](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/iam/daps)
- - [PostgreSQL Persistence Extensions](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql)
+ - [IDS DAPS Extensions](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/common/iam/oauth2/daps)
+ - [PostgreSQL Persistence Extensions](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql)
- [HashiCorp Vault Extension](../edc-extensions/hashicorp-vault/README.md)
- [Data Plane](../edc-dataplane/edc-dataplane-hashicorp-vault/README.md)
- [HashiCorp Vault Extension](../edc-extensions/hashicorp-vault/README.md)
@@ -46,9 +46,9 @@ The three supported setups are.
**Eclipse Dataspace Connector**
-- [EDC Domain Model](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/blob/main/docs/architecture/domain-model.md)
+- [EDC Domain Model](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/blob/main/docs/developer/architecture/domain-model.md)
- [EDC Open API Spec](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/blob/main/resources/openapi/openapi.yaml)
-- [HTTP Receiver Extension](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/http-receiver)
+- [HTTP Receiver Extension](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/http-receiver)
**Catena-X**
diff --git a/docs/data-transfer/Transfer Data.md b/docs/data-transfer/Transfer Data.md
index d9665d0f3..529c06416 100644
--- a/docs/data-transfer/Transfer Data.md
+++ b/docs/data-transfer/Transfer Data.md
@@ -46,17 +46,19 @@ Initialize the following environment variables, that are used in the upcoming AP
```bash
export PLATO_DATAMGMT_URL=$(minikube service plato-edc-controlplane -n edc-all-in-one --url | sed -n 3p)
-export PLATO_IDS_URL=$(minikube service plato-edc-controlplane -n edc-all-in-one --url | sed -n 5p)
+export PLATO_IDS_URL="http://plato-edc-controlplane:8282"
export SOKRATES_DATAMGMT_URL=$(minikube service sokrates-edc-controlplane -n edc-all-in-one --url | sed -n 3p)
export SOKRATES_BACKEND_URL=$(minikube service sokrates-backend-application -n edc-all-in-one --url | sed -n 2p)
```
+Please note: The IDS URL is used for DAPS Token Audience validation. Therefore it must be the internal IDS url, that is configured inside the connector.
+
## 1. Setup Data Offer
Set up a data offer in **Plato**, so that **Sokrates** has something to consume.
In case you are unfamiliar with the EDC terms `Asset`, `Policy` or `ContractDefinition` please have a look at the official open
-source documentation ([link](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/blob/main/docs/architecture/domain-model.md)).
+source documentation ([link](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/blob/main/docs/developer/architecture/domain-model.md)).
![Sequence 1](diagrams/transfer_sequence_1.png)
@@ -71,7 +73,7 @@ curl -X POST "$PLATO_DATAMGMT_URL/data/assets" --header "X-Api-Key: password" --
```
```bash
-curl -X POST "$PLATO_DATAMGMT_URL/data/policydefinitions" --header "X-Api-Key: password" --header "Content-Type: application/json" --data "{ \"uid\": \"1\", \"policy\": { \"prohibitions\": [], \"obligations\": [], \"permissions\": [ { \"edctype\": \"dataspaceconnector:permission\", \"action\": { \"type\": \"USE\" }, \"constraints\": [] } ] } }" -s -o /dev/null -w 'Response Code: %{http_code}\n'
+curl -X POST "$PLATO_DATAMGMT_URL/data/policydefinitions" --header "X-Api-Key: password" --header "Content-Type: application/json" --data "{ \"id\": \"1\", \"policy\": { \"prohibitions\": [], \"obligations\": [], \"permissions\": [ { \"edctype\": \"dataspaceconnector:permission\", \"action\": { \"type\": \"USE\" }, \"constraints\": [] } ] } }" -s -o /dev/null -w 'Response Code: %{http_code}\n'
```
```bash
@@ -147,7 +149,7 @@ locally. In this demo the transfer can be verified by executing a simple `cat` c
![Sequence 1](diagrams/transfer_sequence_5.png)
```bash
-curl -X GET ${SOKRATES_BACKEND_URL}/${TRANSFER_PROCESS_ID} -H "Accept: application/octet-stream" -s | jq
+curl -X GET "${SOKRATES_BACKEND_URL}/${TRANSFER_PROCESS_ID}" -H "Accept: application/octet-stream" -s | jq
```
# Delete All Data
diff --git a/docs/diagrams/transfer_sequence_1.png b/docs/diagrams/transfer_sequence_1.png
deleted file mode 100644
index f52ecbb70..000000000
Binary files a/docs/diagrams/transfer_sequence_1.png and /dev/null differ
diff --git a/docs/diagrams/transfer_sequence_1.puml b/docs/diagrams/transfer_sequence_1.puml
deleted file mode 100644
index a159447ee..000000000
--- a/docs/diagrams/transfer_sequence_1.puml
+++ /dev/null
@@ -1,34 +0,0 @@
-@startuml
-
-!define sokratesColor 66CCFF
-!define platoColor CCFF99
-!define dapsColor FFFF99
-!define noteColor 9999FF
-
-actor User as "User"
-
-box Sokrates
- participant SokratesControlPlane as "Control Plane" #sokratesColor
- participant SokratesBackendService as "Backend Application" #sokratesColor
- participant SokratesDataPlane as "Data Plane" #sokratesColor
-end box
-
-box Plato
- participant PlatoControlPlane as "Control Plane" #platoColor
- participant PlatoDataPlane as "Data Plane" #platoColor
-end box
-
-participant JsonPlaceHolder as "JsonPlaceHolder"
-
-
-User -> PlatoControlPlane ++ : Create Asset
-return 204
-
-User -> PlatoControlPlane ++ : Create Policy
-return 204
-
-User -> PlatoControlPlane ++ : Create Contract Definition
-return 204
-
-
-@enduml
diff --git a/docs/diagrams/transfer_sequence_2.png b/docs/diagrams/transfer_sequence_2.png
deleted file mode 100644
index ed2f4dd90..000000000
Binary files a/docs/diagrams/transfer_sequence_2.png and /dev/null differ
diff --git a/docs/diagrams/transfer_sequence_2.puml b/docs/diagrams/transfer_sequence_2.puml
deleted file mode 100644
index 805bcbeec..000000000
--- a/docs/diagrams/transfer_sequence_2.puml
+++ /dev/null
@@ -1,28 +0,0 @@
-@startuml
-
-!define sokratesColor 66CCFF
-!define platoColor CCFF99
-!define dapsColor FFFF99
-!define noteColor 9999FF
-
-actor User as "User"
-
-box Sokrates
- participant SokratesControlPlane as "Control Plane" #sokratesColor
- participant SokratesBackendService as "Backend Application" #sokratesColor
- participant SokratesDataPlane as "Data Plane" #sokratesColor
-end box
-
-box Plato
- participant PlatoControlPlane as "Control Plane" #platoColor
- participant PlatoDataPlane as "Data Plane" #platoColor
-end box
-
-participant JsonPlaceHolder as "JsonPlaceHolder"
-
-User -> SokratesControlPlane ++ : Request Contract Offers from Plato
- SokratesControlPlane -> PlatoControlPlane ++ : IDS Description Request Message
- return Description
-return Contract Offers
-
-@enduml
diff --git a/docs/diagrams/transfer_sequence_3.png b/docs/diagrams/transfer_sequence_3.png
deleted file mode 100644
index b1d56ec6c..000000000
Binary files a/docs/diagrams/transfer_sequence_3.png and /dev/null differ
diff --git a/docs/diagrams/transfer_sequence_3.puml b/docs/diagrams/transfer_sequence_3.puml
deleted file mode 100644
index 43707af36..000000000
--- a/docs/diagrams/transfer_sequence_3.puml
+++ /dev/null
@@ -1,33 +0,0 @@
-@startuml
-
-!define sokratesColor 66CCFF
-!define platoColor CCFF99
-!define dapsColor FFFF99
-!define noteColor 9999FF
-
-actor User as "User"
-
-box Sokrates
- participant SokratesControlPlane as "Control Plane" #sokratesColor
- participant SokratesBackendService as "Backend Application" #sokratesColor
- participant SokratesDataPlane as "Data Plane" #sokratesColor
-end box
-
-box Plato
- participant PlatoControlPlane as "Control Plane" #platoColor
- participant PlatoDataPlane as "Data Plane" #platoColor
-end box
-
-participant JsonPlaceHolder as "JsonPlaceHolder"
-
-
-User -> SokratesControlPlane ++ : Negotiate Contract for Offer X
-SokratesControlPlane --> User: Negotiation ID
- SokratesControlPlane -> PlatoControlPlane ++ : IDS Contract Negotiation (simplified)
- return Contract Agreement
-deactivate SokratesControlPlane
-
-User -> SokratesControlPlane ++ : Request Negotiation by ID
-return Contract Negotiation
-
-@enduml
diff --git a/docs/diagrams/transfer_sequence_4.png b/docs/diagrams/transfer_sequence_4.png
deleted file mode 100644
index 43701e1ba..000000000
Binary files a/docs/diagrams/transfer_sequence_4.png and /dev/null differ
diff --git a/docs/diagrams/transfer_sequence_4.puml b/docs/diagrams/transfer_sequence_4.puml
deleted file mode 100644
index 704938917..000000000
--- a/docs/diagrams/transfer_sequence_4.puml
+++ /dev/null
@@ -1,44 +0,0 @@
-@startuml
-
-!define sokratesColor 66CCFF
-!define platoColor CCFF99
-!define dapsColor FFFF99
-!define noteColor 9999FF
-
-actor User as "User"
-
-box Sokrates
- participant SokratesControlPlane as "Control Plane" #sokratesColor
- participant SokratesBackendService as "Backend Application" #sokratesColor
- participant SokratesDataPlane as "Data Plane" #sokratesColor
-end box
-
-box Plato
- participant PlatoControlPlane as "Control Plane" #platoColor
- participant PlatoDataPlane as "Data Plane" #platoColor
-end box
-
-participant JsonPlaceHolder as "JsonPlaceHolder"
-
-User -> SokratesControlPlane ++ : Request Negotiation by ID
-return Contract Negotiation\n(containing Contract Agreement ID)
-
-User -> SokratesControlPlane ++ : Initiate Transfer with Agreement ID
-SokratesControlPlane --> User : Transfer Process ID
- SokratesControlPlane -> PlatoControlPlane ++ : IDS Data Transfer (simplified)
-return
-SokratesControlPlane -> SokratesBackendService ++ : Data Plane Endpoint + Token
- SokratesBackendService -> SokratesDataPlane ++ : Request Data with Token
- SokratesDataPlane -> PlatoDataPlane ++ : Request Data
- PlatoDataPlane -> JsonPlaceHolder ++ : Request Data
- return data
- return data
- return data
- SokratesBackendService -> SokratesBackendService : Write Data to File
-return ok
-deactivate SokratesControlPlane
-
-User -> SokratesControlPlane ++ : Request Transfer Process by ID
-return Transfer Process
-
-@enduml
diff --git a/docs/diagrams/transfer_sequence_5.png b/docs/diagrams/transfer_sequence_5.png
deleted file mode 100644
index 080c26335..000000000
Binary files a/docs/diagrams/transfer_sequence_5.png and /dev/null differ
diff --git a/docs/diagrams/transfer_sequence_5.puml b/docs/diagrams/transfer_sequence_5.puml
deleted file mode 100644
index b64f2222b..000000000
--- a/docs/diagrams/transfer_sequence_5.puml
+++ /dev/null
@@ -1,27 +0,0 @@
-@startuml
-
-!define sokratesColor 66CCFF
-!define platoColor CCFF99
-!define dapsColor FFFF99
-!define noteColor 9999FF
-
-actor User as "User"
-
-box Sokrates
- participant SokratesControlPlane as "Control Plane" #sokratesColor
- participant SokratesBackendService as "Backend Application" #sokratesColor
- participant SokratesDataPlane as "Data Plane" #sokratesColor
-end box
-
-box Plato
- participant PlatoControlPlane as "Control Plane" #platoColor
- participant PlatoDataPlane as "Data Plane" #platoColor
-end box
-
-participant JsonPlaceHolder as "JsonPlaceHolder"
-
-User -> SokratesBackendService ++ : Get File Content
-return data
-
-
-@enduml
diff --git a/docs/migration/Version_0.1.0_0.1.1.md b/docs/migration/Version_0.1.0_0.1.1.md
new file mode 100644
index 000000000..e0caa4fa2
--- /dev/null
+++ b/docs/migration/Version_0.1.0_0.1.1.md
@@ -0,0 +1,91 @@
+# Migration Version 0.1.0 to 0.1.1
+
+This document contains a list of breaking changes that are introduced in version 0.1.1.
+
+---
+
+**Please Note**:
+Due to a change in the DAPS authentication mechanism this version cannot exchange messages with older EDC versions!
+
+---
+
+## 0. Summary
+
+1. Data Management API
+ 1. Policy Payload
+2. Connector Configuration
+ 1. CX OAuth Extension
+
+
+## 1. Data Management API
+
+It might be necessary to update applications and scripts that use the Data Management API. This section covers the most
+important changes in endpoints and payloads.
+
+### 1.1 Policy Payload
+
+The id field of the PolicyDefinition was renamed from `uid` to `id`.
+
+
+
+Example
+
+Old Call
+```json
+{
+ "uid": "1",
+ "policy": {
+ "prohibitions": [],
+ "obligations": [],
+ "permissions": [
+ {
+ "edctype": "dataspaceconnector:permission",
+ "action": {
+ "type": "USE"
+ },
+ "constraints": []
+ }
+ ]
+ }
+}
+```
+
+New call
+```json
+{
+ "id": "1",
+ "policy": {
+ "prohibitions": [],
+ "obligations": [],
+ "permissions": [
+ {
+ "edctype": "dataspaceconnector:permission",
+ "action": {
+ "type": "USE"
+ },
+ "constraints": []
+ }
+ ]
+ }
+}
+```
+
+
+
+## 2. Connector Configuration
+### 2.1. CX OAuth Extension
+
+All connectors are now shipped with a new OAuth extension. This extension has an additional mandatory setting called `edc.oauth.endpoint.audience`, that must be set to the IDS path.
+
+[Documentation](/edc-extensions/cx-oauth2/README.md)
+
+
+
+
+Example
+
+```
+edc.oauth.endpoint.audience=http://plato-edc-controlplane:8282/api/v1/ids/data
+```
+
+
diff --git a/docs/release-notes/Version 0.1.1.md b/docs/release-notes/Version 0.1.1.md
new file mode 100644
index 000000000..3e5247942
--- /dev/null
+++ b/docs/release-notes/Version 0.1.1.md
@@ -0,0 +1,43 @@
+# Release Notes Version 0.1.1
+31.08.2022
+
+
+> **BREAKING CHANGES**
+>
+> Please consolidate the migration documentation ([link](../migration/Version_0.1.0_0.1.1.md)).
+
+## 0. Summary
+
+- 1. Eclipse Dataspace Connector Update
+- 2. New Extensions
+ - 2.1 CX IAM OAuth2 Extension
+- 3. Bug Fixes
+
+## 1. Eclipse Dataspace Connector Update
+
+Due to problems with the EDC release pipeline this repository will _again_ build the artifacts agin using Git submodule.
+
+The Git submodule references a commit, older than **0.0.1-milestone-6**.
+
+## 2. New Extensions
+
+The following extensions are now included in the base image of the connector.
+
+### 2.1 CX IAM OAuth2 Extension
+
+Using the open source OAuth Extension it is possible for a connector to re-use an IDS DAPS Token and forge the own identity (replay attack). To mitigate the security issue for the upcoming release Catena-X introduces its own OAuth2 IAM Extension. Except for the audience, the IAM configuration stays similar.
+
+[Documentation](../../edc-extensions/cx-oauth2/README.md)
+
+
+**New Audience Configuration**
+
+```
+edc.oauth.endpoint.audience=http://plato-edc-controlplane:8282/api/v1/ids/data
+```
+
+## 3. Bug Fixes
+
+This section covers the most relevant bug fixes, included in this version.
+
+- Connectors using the Azure Key Vault could not start ([issue](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/issues/1892))
diff --git a/edc b/edc
new file mode 160000
index 000000000..658c5e31a
--- /dev/null
+++ b/edc
@@ -0,0 +1 @@
+Subproject commit 658c5e31accf5f7f4b221e94478763fd30af7d85
diff --git a/edc-controlplane/README.md b/edc-controlplane/README.md
index 45e22e578..230e156d8 100644
--- a/edc-controlplane/README.md
+++ b/edc-controlplane/README.md
@@ -41,6 +41,12 @@ EDC commit the Product-EDC uses.
---
+**Persistence**
+- ContractDefinition-AssetSelector of InMemory Connector selects 50 Asset max.([issue](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/issues/1779))
+
+**Transfer**
+- Transfer Process remains 'InProgress' on provider side ([issue](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/issues/1287))
+
**Configuration**
- Contract negotiation not working when `web.http.ids.path` is configured/changed ([issue](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/issues/1249))
- **Workaround:** Don't configure `web.http.ids.path`, so that the default path is used.
@@ -48,6 +54,8 @@ EDC commit the Product-EDC uses.
- HttpProxy Transfer: Provider Control Plane spams Consumer Control Plane + HttpProxy Backend Application with requests([issue](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/issues/1840))
- **Possible Workaround:** Reconfigure data plane URL from `http://dataplane:8185/api/public` to `http://dataplane:8185/api/public/`
+- Non-telling logs when `edc.transfer.proxy.token.verifier.publickey.alias` setting is missing([issue](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/issues/1889))
+
**Data Management API**
- Contract negotiation not working when initiated with policy id ([issue](https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/issues/1251))
- **Workaround:** The DataManagement API can also initiate a contract negotiation using the actual policy object.
diff --git a/edc-controlplane/edc-controlplane-base/pom.xml b/edc-controlplane/edc-controlplane-base/pom.xml
index c3479ad65..7aca2a18a 100644
--- a/edc-controlplane/edc-controlplane-base/pom.xml
+++ b/edc-controlplane/edc-controlplane-base/pom.xml
@@ -18,7 +18,7 @@
edc-controlplane
net.catenax.edc
- 0.1.0
+ 0.1.1
4.0.0
@@ -63,6 +63,10 @@
net.catenax.edc.extensions
data-encryption
+
+ net.catenax.edc.extensions
+ cx-oauth2
+
@@ -111,10 +115,6 @@
org.eclipse.dataspaceconnector
ids-spi
-
- org.eclipse.dataspaceconnector
- ids-token-validation
-
@@ -133,6 +133,16 @@
org.eclipse.dataspaceconnector
contract
+
+ org.eclipse.dataspaceconnector
+ jwt-spi
+
+
@@ -149,7 +159,7 @@
org.eclipse.dataspaceconnector
- data-plane-selector-store
+ data-plane-selector-spi
diff --git a/edc-controlplane/edc-controlplane-memory/pom.xml b/edc-controlplane/edc-controlplane-memory/pom.xml
index fc34a146b..43334f0a2 100644
--- a/edc-controlplane/edc-controlplane-memory/pom.xml
+++ b/edc-controlplane/edc-controlplane-memory/pom.xml
@@ -16,7 +16,7 @@
net.catenax.edc
edc-controlplane
- 0.1.0
+ 0.1.1
4.0.0
@@ -104,16 +104,6 @@
-
-
- org.eclipse.dataspaceconnector
- oauth2-core
-
-
- org.eclipse.dataspaceconnector
- iam-daps
-
-
com.azure
diff --git a/edc-controlplane/edc-controlplane-memory/src/main/docker/Dockerfile b/edc-controlplane/edc-controlplane-memory/src/main/docker/Dockerfile
index ca59ecaf3..350eeb6c5 100644
--- a/edc-controlplane/edc-controlplane-memory/src/main/docker/Dockerfile
+++ b/edc-controlplane/edc-controlplane-memory/src/main/docker/Dockerfile
@@ -16,7 +16,7 @@ ENV OTEL_AGENT_LOCATION "https://github.com/open-telemetry/opentelemetry-java-in
RUN wget ${OTEL_AGENT_LOCATION} -O /tmp/opentelemetry-javaagent.jar
-FROM gcr.io/distroless/java11-debian11
+FROM gcr.io/distroless/java11-debian11@sha256:dee9240c64471f1776a6b37f315890aba14ff4bc89ad247eeb34ec79fdeb24f4
ARG JAR
ARG LIB
diff --git a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/pom.xml b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/pom.xml
index 8ad768112..0aa9f47e3 100644
--- a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/pom.xml
+++ b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/pom.xml
@@ -17,7 +17,7 @@
net.catenax.edc
edc-controlplane
- 0.1.0
+ 0.1.1
4.0.0
diff --git a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/src/main/docker/Dockerfile b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/src/main/docker/Dockerfile
index ca59ecaf3..350eeb6c5 100644
--- a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/src/main/docker/Dockerfile
+++ b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/src/main/docker/Dockerfile
@@ -16,7 +16,7 @@ ENV OTEL_AGENT_LOCATION "https://github.com/open-telemetry/opentelemetry-java-in
RUN wget ${OTEL_AGENT_LOCATION} -O /tmp/opentelemetry-javaagent.jar
-FROM gcr.io/distroless/java11-debian11
+FROM gcr.io/distroless/java11-debian11@sha256:dee9240c64471f1776a6b37f315890aba14ff4bc89ad247eeb34ec79fdeb24f4
ARG JAR
ARG LIB
diff --git a/edc-controlplane/edc-controlplane-postgresql/pom.xml b/edc-controlplane/edc-controlplane-postgresql/pom.xml
index 5eaa05784..c0c97462e 100644
--- a/edc-controlplane/edc-controlplane-postgresql/pom.xml
+++ b/edc-controlplane/edc-controlplane-postgresql/pom.xml
@@ -17,7 +17,7 @@
net.catenax.edc
edc-controlplane
- 0.1.0
+ 0.1.1
4.0.0
@@ -133,17 +133,6 @@
policy-store-sql
-
-
- org.eclipse.dataspaceconnector
- oauth2-core
-
-
- org.eclipse.dataspaceconnector
- iam-daps
-
-
-
org.eclipse.dataspaceconnector
diff --git a/edc-controlplane/edc-controlplane-postgresql/src/main/docker/Dockerfile b/edc-controlplane/edc-controlplane-postgresql/src/main/docker/Dockerfile
index ca59ecaf3..350eeb6c5 100644
--- a/edc-controlplane/edc-controlplane-postgresql/src/main/docker/Dockerfile
+++ b/edc-controlplane/edc-controlplane-postgresql/src/main/docker/Dockerfile
@@ -16,7 +16,7 @@ ENV OTEL_AGENT_LOCATION "https://github.com/open-telemetry/opentelemetry-java-in
RUN wget ${OTEL_AGENT_LOCATION} -O /tmp/opentelemetry-javaagent.jar
-FROM gcr.io/distroless/java11-debian11
+FROM gcr.io/distroless/java11-debian11@sha256:dee9240c64471f1776a6b37f315890aba14ff4bc89ad247eeb34ec79fdeb24f4
ARG JAR
ARG LIB
diff --git a/edc-controlplane/pom.xml b/edc-controlplane/pom.xml
index 4b11e2336..1414a5d93 100644
--- a/edc-controlplane/pom.xml
+++ b/edc-controlplane/pom.xml
@@ -17,7 +17,7 @@
net.catenax.edc
product-edc-parent
- 0.1.0
+ 0.1.1
4.0.0
diff --git a/edc-dataplane/edc-dataplane-azure-vault/pom.xml b/edc-dataplane/edc-dataplane-azure-vault/pom.xml
index 377ff8040..5420c8a78 100644
--- a/edc-dataplane/edc-dataplane-azure-vault/pom.xml
+++ b/edc-dataplane/edc-dataplane-azure-vault/pom.xml
@@ -17,7 +17,7 @@
net.catenax.edc
edc-dataplane
- 0.1.0
+ 0.1.1
4.0.0
diff --git a/edc-dataplane/edc-dataplane-azure-vault/src/main/docker/Dockerfile b/edc-dataplane/edc-dataplane-azure-vault/src/main/docker/Dockerfile
index 9bada80f3..4b527f281 100644
--- a/edc-dataplane/edc-dataplane-azure-vault/src/main/docker/Dockerfile
+++ b/edc-dataplane/edc-dataplane-azure-vault/src/main/docker/Dockerfile
@@ -16,7 +16,7 @@ ENV OTEL_AGENT_LOCATION "https://github.com/open-telemetry/opentelemetry-java-in
RUN wget ${OTEL_AGENT_LOCATION} -O /tmp/opentelemetry-javaagent.jar
-FROM gcr.io/distroless/java11-debian11
+FROM gcr.io/distroless/java11-debian11@sha256:dee9240c64471f1776a6b37f315890aba14ff4bc89ad247eeb34ec79fdeb24f4
ARG JAR
ARG LIB
diff --git a/edc-dataplane/edc-dataplane-base/pom.xml b/edc-dataplane/edc-dataplane-base/pom.xml
index d5919a968..6905ca3ba 100644
--- a/edc-dataplane/edc-dataplane-base/pom.xml
+++ b/edc-dataplane/edc-dataplane-base/pom.xml
@@ -18,7 +18,7 @@
edc-dataplane
net.catenax.edc
- 0.1.0
+ 0.1.1
4.0.0
diff --git a/edc-dataplane/edc-dataplane-hashicorp-vault/pom.xml b/edc-dataplane/edc-dataplane-hashicorp-vault/pom.xml
index 7a6cc8131..351b705a5 100644
--- a/edc-dataplane/edc-dataplane-hashicorp-vault/pom.xml
+++ b/edc-dataplane/edc-dataplane-hashicorp-vault/pom.xml
@@ -17,7 +17,7 @@
net.catenax.edc
edc-dataplane
- 0.1.0
+ 0.1.1
4.0.0
diff --git a/edc-dataplane/edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile b/edc-dataplane/edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile
index 9bada80f3..4b527f281 100644
--- a/edc-dataplane/edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile
+++ b/edc-dataplane/edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile
@@ -16,7 +16,7 @@ ENV OTEL_AGENT_LOCATION "https://github.com/open-telemetry/opentelemetry-java-in
RUN wget ${OTEL_AGENT_LOCATION} -O /tmp/opentelemetry-javaagent.jar
-FROM gcr.io/distroless/java11-debian11
+FROM gcr.io/distroless/java11-debian11@sha256:dee9240c64471f1776a6b37f315890aba14ff4bc89ad247eeb34ec79fdeb24f4
ARG JAR
ARG LIB
diff --git a/edc-dataplane/pom.xml b/edc-dataplane/pom.xml
index d70c135a9..2b7e8fd52 100644
--- a/edc-dataplane/pom.xml
+++ b/edc-dataplane/pom.xml
@@ -18,7 +18,7 @@
net.catenax.edc
product-edc-parent
- 0.1.0
+ 0.1.1
edc-dataplane
diff --git a/edc-extensions/business-partner-validation/pom.xml b/edc-extensions/business-partner-validation/pom.xml
index f43c39cd6..2523e9bc3 100644
--- a/edc-extensions/business-partner-validation/pom.xml
+++ b/edc-extensions/business-partner-validation/pom.xml
@@ -17,7 +17,7 @@
net.catenax.edc.extensions
edc-extensions
- 0.1.0
+ 0.1.1
4.0.0
diff --git a/edc-extensions/cx-oauth2/README.md b/edc-extensions/cx-oauth2/README.md
new file mode 100644
index 000000000..5f721e4ea
--- /dev/null
+++ b/edc-extensions/cx-oauth2/README.md
@@ -0,0 +1,25 @@
+# Catena-X OAuth2 Extension
+
+## Why Catena-X needs this extension
+
+In IDS the DAPS token audience is always `idsc:IDS_CONNECTORS_ALL`. At first glance this makes it possible for other connectors to steal and reuse an received token. To mitigate this security risk IDS introduces something called `transportCertsSha256`, which couples the connector audience with its corresponding TLS/SSL certificate.
+
+From [GitHub IDS-G](https://github.com/International-Data-Spaces-Association/IDS-G/tree/main/Components/IdentityProvider/DAPS)
+
+> - **transportCertsSha256** Contains the public keys of the used transport certificates, hashed using SHA256. The identifying X509 certificate should not be used for the communication encryption. Therefore, the receiving party needs to connect the identity of a connector by relating its hostname (from the communication encryption layer) and the used private/public key pair, with its IDS identity claim of the DAT. The public transportation key must be one of the `transportCertsSha256` values. Otherwise, the receiving connector must expect that the requesting connector is using a false identity claim. In general, this claim holds an Array of Strings, but it may optionally hold a single String instead if the Array would have exactly one element.
+
+The reason IDS did this is to prevent the IDS DAPS to know, which connectors talk to each other. But this solution introduces a new level of complexity for different deployment scenarios. The Catena-X OAuth2 Extension introduces the classic audience validation again, so that Catena-X does not have to deal with these things for now.
+
+## Configuration
+
+| Key | Description | Mandatory | Default |
+|:----|:----|----|----|
+| edc.oauth.token.url | Token URL of the DAPS | X | |
+| edc.oauth.public.key.alias | Vault alias of the public key | X | |
+| edc.oauth.client.id | DAPS client id of the connector | X | |
+| edc.oauth.private.key.alias | Vault lias of the private key | X | |
+| edc.oauth.token.expiration.seconds | | | 5 minutes |
+| edc.oauth.validation.nbf.leeway | DAPS token request leeway | | 10 seconds |
+| edc.oauth.provider.jwks.refresh | Time between refresh of the DAPS json web key set | | 5 minutes |
+| edc.ids.endpoint.audience | The audience the connector requests from the DAPS. Should be the IDS URL of the connector, e.g. `http://plato-edc-controlplane:8282/api/v1/ids/data` | X | |
+| edc.ids.validation.referringconnector | Adds checks to the DAPS token. Validation that the `referringConnector` equals the `issuerConnector` and the `securityProfile` of the token is equal to the profile of the IDS message | | false |
\ No newline at end of file
diff --git a/edc-extensions/cx-oauth2/pom.xml b/edc-extensions/cx-oauth2/pom.xml
new file mode 100644
index 000000000..b6b56ca5a
--- /dev/null
+++ b/edc-extensions/cx-oauth2/pom.xml
@@ -0,0 +1,149 @@
+
+
+
+
+ edc-extensions
+ net.catenax.edc.extensions
+ 0.1.1
+
+ 4.0.0
+
+ cx-oauth2
+ jar
+
+
+ ${project.basedir}/src/main/java
+ ${originalSourceDirectory}
+ ${project.build.directory}/delombok
+ ${project.groupId}_${project.artifactId}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ ${maven.compiler.target}
+ ${project.build.sourceEncoding}
+
+
+ org.projectlombok
+ lombok
+ ${org.projectlombok.lombok.version}
+
+
+
+
+
+
+ org.projectlombok
+ lombok-maven-plugin
+ ${org.projectlombok.lombok.maven.plugin.version}
+
+
+ generate-sources
+
+ delombok
+
+
+
+
+ ${originalSourceDirectory}
+ ${delombokSourceDirectory}
+ false
+ UTF-8
+
+ skip
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+
+
+ attach-sources
+
+ jar
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.dataspaceconnector
+ core-spi
+
+
+ org.eclipse.dataspaceconnector
+ oauth2-spi
+
+
+ org.eclipse.dataspaceconnector
+ jwt-spi
+
+
+
+
+ org.eclipse.dataspaceconnector
+ jwt-spi
+
+
+
+
+
+ org.projectlombok
+ lombok
+
+
+ org.slf4j
+ slf4j-api
+
+
+ com.nimbusds
+ nimbus-jose-jwt
+ 8.23
+
+
+ com.squareup.okhttp3
+ okhttp
+
+
+
+
+ org.junit.jupiter
+ junit-jupiter
+ test
+
+
+ org.mockito
+ mockito-core
+ test
+
+
+ org.mockito
+ mockito-inline
+ test
+
+
+
diff --git a/edc-extensions/cx-oauth2/src/main/java/net/catenax/edc/oauth2/OAuth2Extension.java b/edc-extensions/cx-oauth2/src/main/java/net/catenax/edc/oauth2/OAuth2Extension.java
new file mode 100644
index 000000000..abc008b95
--- /dev/null
+++ b/edc-extensions/cx-oauth2/src/main/java/net/catenax/edc/oauth2/OAuth2Extension.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Apache License, Version 2.0 which is available at
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Contributors:
+ * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation
+ *
+ */
+package net.catenax.edc.oauth2;
+
+import java.net.URI;
+import lombok.NonNull;
+import lombok.Setter;
+import okhttp3.OkHttpClient;
+import org.eclipse.dataspaceconnector.iam.oauth2.spi.Oauth2JwtDecoratorRegistry;
+import org.eclipse.dataspaceconnector.spi.EdcException;
+import org.eclipse.dataspaceconnector.spi.EdcSetting;
+import org.eclipse.dataspaceconnector.spi.iam.IdentityService;
+import org.eclipse.dataspaceconnector.spi.jwt.TokenGenerationService;
+import org.eclipse.dataspaceconnector.spi.jwt.TokenValidationService;
+import org.eclipse.dataspaceconnector.spi.system.Inject;
+import org.eclipse.dataspaceconnector.spi.system.Provides;
+import org.eclipse.dataspaceconnector.spi.system.Requires;
+import org.eclipse.dataspaceconnector.spi.system.ServiceExtension;
+import org.eclipse.dataspaceconnector.spi.system.ServiceExtensionContext;
+
+@Provides(IdentityService.class)
+@Requires({
+ OkHttpClient.class,
+ Oauth2JwtDecoratorRegistry.class,
+ TokenGenerationService.class,
+ TokenValidationService.class
+})
+public class OAuth2Extension implements ServiceExtension {
+
+ @EdcSetting private static final String TOKEN_URL = "edc.oauth.token.url";
+
+ @EdcSetting private static final String PROVIDER_AUDIENCE = "edc.oauth.provider.audience";
+
+ @Inject @Setter private OkHttpClient okHttpClient;
+
+ @Inject @Setter private Oauth2JwtDecoratorRegistry jwtDecoratorRegistry;
+
+ @Inject @Setter private TokenGenerationService tokenGenerationService;
+
+ @Inject @Setter private TokenValidationService tokenValidationService;
+
+ @Override
+ public void initialize(@NonNull final ServiceExtensionContext serviceExtensionContext) {
+ final String tokenUrl = serviceExtensionContext.getSetting(TOKEN_URL, null);
+ if (tokenUrl == null) {
+ throw new EdcException("Missing required setting: " + TOKEN_URL);
+ }
+
+ final URI tokenUri = URI.create(tokenUrl);
+
+ final OAuth2IdentityService oAuth2IdentityService =
+ new OAuth2IdentityService(
+ tokenUri,
+ okHttpClient,
+ serviceExtensionContext.getTypeManager(),
+ jwtDecoratorRegistry,
+ tokenGenerationService,
+ tokenValidationService);
+
+ serviceExtensionContext.registerService(IdentityService.class, oAuth2IdentityService);
+ }
+}
diff --git a/edc-extensions/cx-oauth2/src/main/java/net/catenax/edc/oauth2/OAuth2IdentityService.java b/edc-extensions/cx-oauth2/src/main/java/net/catenax/edc/oauth2/OAuth2IdentityService.java
new file mode 100644
index 000000000..b1c4dac0f
--- /dev/null
+++ b/edc-extensions/cx-oauth2/src/main/java/net/catenax/edc/oauth2/OAuth2IdentityService.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2020 - 2022 Microsoft Corporation
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Apache License, Version 2.0 which is available at
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Contributors:
+ * Microsoft Corporation - initial API and implementation
+ * Fraunhofer Institute for Software and Systems Engineering - Improvements
+ * Microsoft Corporation - Use IDS Webhook address for JWT audience claim
+ * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - improvements
+ * Mercedes-Benz Tech Innovation GmbH - Refactoring
+ *
+ */
+
+package net.catenax.edc.oauth2;
+
+import java.net.URI;
+import java.util.LinkedHashMap;
+import java.util.Objects;
+import lombok.NonNull;
+import lombok.RequiredArgsConstructor;
+import okhttp3.FormBody;
+import okhttp3.HttpUrl;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+import okhttp3.ResponseBody;
+import org.eclipse.dataspaceconnector.spi.EdcException;
+import org.eclipse.dataspaceconnector.spi.iam.ClaimToken;
+import org.eclipse.dataspaceconnector.spi.iam.IdentityService;
+import org.eclipse.dataspaceconnector.spi.iam.TokenParameters;
+import org.eclipse.dataspaceconnector.spi.iam.TokenRepresentation;
+import org.eclipse.dataspaceconnector.spi.jwt.JwtDecorator;
+import org.eclipse.dataspaceconnector.spi.jwt.JwtDecoratorRegistry;
+import org.eclipse.dataspaceconnector.spi.jwt.TokenGenerationService;
+import org.eclipse.dataspaceconnector.spi.jwt.TokenValidationService;
+import org.eclipse.dataspaceconnector.spi.result.Result;
+import org.eclipse.dataspaceconnector.spi.types.TypeManager;
+
+@RequiredArgsConstructor
+public class OAuth2IdentityService implements IdentityService {
+
+ private static final String GRANT_TYPE_CLIENT_CREDENTIALS = "client_credentials";
+ private static final String CLIENT_ASSERTION_TYPE_JWT_BEARER =
+ "urn:ietf:params:oauth:client-assertion-type:jwt-bearer";
+ private static final String CONTENT_TYPE_APPLICATION_FORM_URLENCODED =
+ "application/x-www-form-urlencoded";
+ private static final String CONTENT_TYPE = "Content-Type";
+ private static final String RESOURCE = "resource";
+ private static final String CLIENT_ASSERTION_TYPE = "client_assertion_type";
+ private static final String GRANT_TYPE = "grant_type";
+ private static final String CLIENT_ASSERTION = "client_assertion";
+ private static final String SCOPE = "scope";
+
+ @NonNull private final URI tokenUrl;
+ @NonNull private final OkHttpClient httpClient;
+ @NonNull private final TypeManager typeManager;
+ @NonNull private final JwtDecoratorRegistry jwtDecoratorRegistry;
+ @NonNull private final TokenGenerationService tokenGenerationService;
+ @NonNull private final TokenValidationService tokenValidationService;
+
+ @Override
+ public Result obtainClientCredentials(
+ @NonNull final TokenParameters tokenParameters) {
+ final Result jwtCreationResult =
+ tokenGenerationService.generate(jwtDecoratorRegistry.getAll().toArray(JwtDecorator[]::new));
+ if (jwtCreationResult.failed()) {
+ return jwtCreationResult;
+ }
+
+ final String assertion = jwtCreationResult.getContent().getToken();
+
+ final FormBody.Builder requestBodyBuilder =
+ new FormBody.Builder()
+ .add(CLIENT_ASSERTION_TYPE, CLIENT_ASSERTION_TYPE_JWT_BEARER)
+ .add(GRANT_TYPE, GRANT_TYPE_CLIENT_CREDENTIALS)
+ .add(CLIENT_ASSERTION, assertion)
+ .add(SCOPE, tokenParameters.getScope())
+ .add(RESOURCE, tokenParameters.getAudience());
+
+ try {
+ final HttpUrl httpUrl = Objects.requireNonNull(HttpUrl.get(tokenUrl));
+ final Request request =
+ new Request.Builder()
+ .url(httpUrl)
+ .addHeader(CONTENT_TYPE, CONTENT_TYPE_APPLICATION_FORM_URLENCODED)
+ .post(requestBodyBuilder.build())
+ .build();
+
+ try (final Response response = httpClient.newCall(request).execute()) {
+ try (final ResponseBody responseBody = response.body()) {
+ if (!response.isSuccessful()) {
+ final String message = responseBody == null ? "" : responseBody.string();
+ return Result.failure(message);
+ }
+
+ if (responseBody == null) {
+ return Result.failure("");
+ }
+
+ final String responsePayload = responseBody.string();
+
+ @SuppressWarnings("rawtypes")
+ LinkedHashMap deserialized = typeManager.readValue(responsePayload, LinkedHashMap.class);
+
+ final String token = (String) deserialized.get("access_token");
+
+ final TokenRepresentation tokenRepresentation =
+ TokenRepresentation.Builder.newInstance().token(token).build();
+
+ return Result.success(tokenRepresentation);
+ }
+ }
+ } catch (final Exception exception) {
+ throw new EdcException(exception);
+ }
+ }
+
+ @Override
+ public Result verifyJwtToken(
+ @NonNull final TokenRepresentation tokenRepresentation, final String audience) {
+ return tokenValidationService.validate(tokenRepresentation);
+ }
+}
diff --git a/edc-extensions/cx-oauth2/src/main/java/net/catenax/edc/oauth2/jwk/JsonWebKey.java b/edc-extensions/cx-oauth2/src/main/java/net/catenax/edc/oauth2/jwk/JsonWebKey.java
new file mode 100644
index 000000000..70712fbd7
--- /dev/null
+++ b/edc-extensions/cx-oauth2/src/main/java/net/catenax/edc/oauth2/jwk/JsonWebKey.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2020, 2021 Microsoft Corporation
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Apache License, Version 2.0 which is available at
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Contributors:
+ * Microsoft Corporation - initial API and implementation
+ * Mercedes-Benz Tech Innovation GmbH - refactoring
+ */
+
+package net.catenax.edc.oauth2.jwk;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+
+@Data
+public class JsonWebKey {
+ @JsonProperty("kty")
+ private String kty;
+
+ @JsonProperty("use")
+ private String use;
+
+ @JsonProperty("kid")
+ private String kid;
+
+ @JsonProperty("x5t")
+ private String x5t;
+
+ @JsonProperty("n")
+ private String nn;
+
+ @JsonProperty("e")
+ private String ee;
+
+ @JsonProperty("x5c")
+ private List x5c;
+
+ @JsonProperty("alg")
+ private String alg;
+}
diff --git a/edc-extensions/cx-oauth2/src/main/java/net/catenax/edc/oauth2/jwk/JsonWebKeySet.java b/edc-extensions/cx-oauth2/src/main/java/net/catenax/edc/oauth2/jwk/JsonWebKeySet.java
new file mode 100644
index 000000000..a4cc93716
--- /dev/null
+++ b/edc-extensions/cx-oauth2/src/main/java/net/catenax/edc/oauth2/jwk/JsonWebKeySet.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2020, 2021 Microsoft Corporation
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Apache License, Version 2.0 which is available at
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Contributors:
+ * Microsoft Corporation - initial API and implementation
+ * Mercedes-Benz Tech Innovation GmbH - refactoring
+ *
+ */
+
+package net.catenax.edc.oauth2.jwk;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+import lombok.Data;
+
+@Data
+public class JsonWebKeySet {
+ @JsonProperty("keys")
+ private List keys;
+}
diff --git a/edc-extensions/cx-oauth2/src/main/java/net/catenax/edc/oauth2/jwk/JwkPublicKeyResolver.java b/edc-extensions/cx-oauth2/src/main/java/net/catenax/edc/oauth2/jwk/JwkPublicKeyResolver.java
new file mode 100644
index 000000000..80b31255e
--- /dev/null
+++ b/edc-extensions/cx-oauth2/src/main/java/net/catenax/edc/oauth2/jwk/JwkPublicKeyResolver.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Apache License, Version 2.0 which is available at
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Contributors:
+ * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation
+ *
+ */
+package net.catenax.edc.oauth2.jwk;
+
+import java.net.URI;
+import java.security.PublicKey;
+import java.time.Duration;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+import lombok.NonNull;
+import lombok.RequiredArgsConstructor;
+import okhttp3.HttpUrl;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+import okhttp3.ResponseBody;
+import org.eclipse.dataspaceconnector.spi.EdcException;
+import org.eclipse.dataspaceconnector.spi.iam.PublicKeyResolver;
+import org.eclipse.dataspaceconnector.spi.monitor.Monitor;
+import org.eclipse.dataspaceconnector.spi.result.Result;
+import org.eclipse.dataspaceconnector.spi.types.TypeManager;
+import org.jetbrains.annotations.Nullable;
+
+@RequiredArgsConstructor
+public class JwkPublicKeyResolver implements PublicKeyResolver {
+ private final Object synchronizationMonitor = new Object();
+
+ @NonNull private final URI jsonWebKeySetUri;
+
+ @NonNull private final OkHttpClient httpClient;
+
+ @NonNull private final TypeManager typeManager;
+
+ @NonNull private final Monitor monitor;
+
+ @NonNull private final List jsonWebKeyReaders;
+
+ @NonNull private final Duration interval;
+
+ private final Map keys = new HashMap<>();
+ private final AtomicReference executorServiceReference =
+ new AtomicReference<>();
+
+ public void start() {
+ synchronized (synchronizationMonitor) {
+ if (executorServiceReference.get() != null) {
+ return;
+ }
+
+ final Result
+
+ net.catenax.edc.extensions
+ cx-oauth2
+
net.catenax.edc
diff --git a/edc-tests/src/main/resources/deployment/helm/all-in-one/templates/secret.yaml b/edc-tests/src/main/resources/deployment/helm/all-in-one/templates/secret.yaml
index 8e27ac060..5b5145d3a 100644
--- a/edc-tests/src/main/resources/deployment/helm/all-in-one/templates/secret.yaml
+++ b/edc-tests/src/main/resources/deployment/helm/all-in-one/templates/secret.yaml
@@ -21,17 +21,17 @@ metadata:
{{- include "aio.labels" . | nindent 4 }}
type: Opaque
stringData:
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/api/auth-tokenbased
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/common/auth/auth-tokenbased
EDC_API_AUTH_KEY: {{ $plato_api_auth_key | toString | quote }}
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/asset-index-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/asset-index-sql
EDC_DATASOURCE_ASSET_PASSWORD: {{ $plato_psql_password | toString | quote }}
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/contract-definition-store-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/contract-definition-store-sql
EDC_DATASOURCE_CONTRACTDEFINITION_PASSWORD: {{ $plato_psql_password | toString | quote }}
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/contract-negotiation-store-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/contract-negotiation-store-sql
EDC_DATASOURCE_CONTRACTNEGOTIATION_PASSWORD: {{ $plato_psql_password | toString | quote }}
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/policy-store-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/policy-store-sql
EDC_DATASOURCE_POLICY_PASSWORD: {{ $plato_psql_password | toString | quote }}
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/transfer-process-store-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/transfer-process-store-sql
EDC_DATASOURCE_TRANSFERPROCESS_PASSWORD: {{ $plato_psql_password | toString | quote }}
# see extension https://github.com/catenax-ng/product-edc/tree/develop/edc-extensions/hashicorp-vault
EDC_VAULT_HASHICORP_TOKEN: {{ $plato_vault_token | toString | quote }}
@@ -61,17 +61,17 @@ metadata:
{{- include "aio.labels" . | nindent 4 }}
type: Opaque
stringData:
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/api/auth-tokenbased
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/common/auth/auth-tokenbased
EDC_API_AUTH_KEY: {{ $sokrates_api_auth_key | toString | quote }}
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/asset-index-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/asset-index-sql
EDC_DATASOURCE_ASSET_PASSWORD: {{ $sokrates_psql_password | toString | quote }}
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/contract-definition-store-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/contract-definition-store-sql
EDC_DATASOURCE_CONTRACTDEFINITION_PASSWORD: {{ $sokrates_psql_password | toString | quote }}
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/contract-negotiation-store-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/contract-negotiation-store-sql
EDC_DATASOURCE_CONTRACTNEGOTIATION_PASSWORD: {{ $sokrates_psql_password | toString | quote }}
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/policy-store-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/policy-store-sql
EDC_DATASOURCE_POLICY_PASSWORD: {{ $sokrates_psql_password | toString | quote }}
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/transfer-process-store-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/transfer-process-store-sql
EDC_DATASOURCE_TRANSFERPROCESS_PASSWORD: {{ $sokrates_psql_password | toString | quote }}
# see extension https://github.com/catenax-ng/product-edc/tree/develop/edc-extensions/hashicorp-vault
EDC_VAULT_HASHICORP_TOKEN: {{ $sokrates_vault_token | toString | quote }}
diff --git a/edc-tests/src/main/resources/deployment/helm/all-in-one/values.yaml b/edc-tests/src/main/resources/deployment/helm/all-in-one/values.yaml
index 9c1bb978e..4494b580b 100644
--- a/edc-tests/src/main/resources/deployment/helm/all-in-one/values.yaml
+++ b/edc-tests/src/main/resources/deployment/helm/all-in-one/values.yaml
@@ -235,13 +235,12 @@ platoedccontrolplane:
## DAPS CONFIGURATION ##
########################
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/iam/oauth2/oauth2-core
+ # see extension https://github.com/catenax-ng/product-edc/tree/develop/edc-extensions/cx-oauth2
EDC_OAUTH_CLIENT_ID: *platoDapsClientId
EDC_OAUTH_PROVIDER_JWKS_URL: &edcControlPlaneOauthJwksUrl "http://ids-daps:4567/jwks.json"
EDC_OAUTH_TOKEN_URL: &edcControlPlaneOauthTokenUrl "http://ids-daps:4567/token"
EDC_OAUTH_PRIVATE_KEY_ALIAS: my-plato-daps-key
EDC_OAUTH_PUBLIC_KEY_ALIAS: my-plato-daps-crt
- EDC_OAUTH_PROVIDER_AUDIENCE: &edcControlPlaneOauthAudience idsc:IDS_CONNECTORS_ALL
#############
## GENERAL ##
@@ -252,33 +251,34 @@ platoedccontrolplane:
# see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/data-protocols/ids/ids-core
EDC_IDS_ENDPOINT: http://plato-edc-controlplane:8282/api/v1/ids
+ EDC_IDS_ENDPOINT_AUDIENCE: http://plato-edc-controlplane:8282/api/v1/ids/data
EDC_IDS_DESCRIPTION: "Plato Control Plane"
################
## POSTGRESQL ##
################
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/asset-index-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/asset-index-sql
EDC_DATASOURCE_ASSET_NAME: asset
EDC_DATASOURCE_ASSET_USER: *psqlUsername
EDC_DATASOURCE_ASSET_URL: &platoPsqlConStr "jdbc:postgresql://plato-postgresql:5432/edc"
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/contract-definition-store-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/contract-definition-store-sql
EDC_DATASOURCE_CONTRACTDEFINITION_NAME: contractdefinition
EDC_DATASOURCE_CONTRACTDEFINITION_USER: *psqlUsername
EDC_DATASOURCE_CONTRACTDEFINITION_URL: *platoPsqlConStr
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/contract-negotiation-store-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/contract-negotiation-store-sql
EDC_DATASOURCE_CONTRACTNEGOTIATION_NAME: contractnegotiation
EDC_DATASOURCE_CONTRACTNEGOTIATION_USER: *psqlUsername
EDC_DATASOURCE_CONTRACTNEGOTIATION_URL: *platoPsqlConStr
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/policy-store-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/policy-store-sql
EDC_DATASOURCE_POLICY_NAME: policy
EDC_DATASOURCE_POLICY_USER: *psqlUsername
EDC_DATASOURCE_POLICY_URL: *platoPsqlConStr
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/transfer-process-store-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/transfer-process-store-sql
EDC_DATASOURCE_TRANSFERPROCESS_NAME: transferprocess
EDC_DATASOURCE_TRANSFERPROCESS_USER: *psqlUsername
EDC_DATASOURCE_TRANSFERPROCESS_URL: *platoPsqlConStr
@@ -296,12 +296,12 @@ platoedccontrolplane:
"publicApiUrl": "http://plato-edc-dataplane:8185/api/public/"
}
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/data-plane-transfer
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/data-plane-transfer
EDC_TRANSFER_PROXY_ENDPOINT: http://plato-edc-dataplane:8185/api/public/
EDC_TRANSFER_PROXY_TOKEN_SIGNER_PRIVATEKEY_ALIAS: my-plato-daps-key # for simplicity this example re-uses the DAPS keys.
EDC_TRANSFER_PROXY_TOKEN_VERIFIER_PUBLICKEY_ALIAS: my-plato-daps-crt # for simplicity this example re-uses the DAPS keys.
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/http-receiver
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/http-receiver
EDC_RECEIVER_HTTP_ENDPOINT: http://plato-backend-application
###############
@@ -490,40 +490,40 @@ sokratesedccontrolplane:
EDC_OAUTH_TOKEN_URL: *edcControlPlaneOauthTokenUrl
EDC_OAUTH_PRIVATE_KEY_ALIAS: my-sokrates-daps-key
EDC_OAUTH_PUBLIC_KEY_ALIAS: my-sokrates-daps-crt
- EDC_OAUTH_PROVIDER_AUDIENCE: *edcControlPlaneOauthAudience
#############
## GENERAL ##
#############
IDS_WEBHOOK_ADDRESS: http://sokrates-edc-controlplane:8282
EDC_IDS_ENDPOINT: http://sokrates-edc-controlplane:8282/api/v1/ids
+ EDC_IDS_ENDPOINT_AUDIENCE: http://sokrates-edc-controlplane:8282/api/v1/ids/data
EDC_IDS_DESCRIPTION: "Sokrates Control Plane"
################
## POSTGRESQL ##
################
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/asset-index-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/asset-index-sql
EDC_DATASOURCE_ASSET_NAME: asset
EDC_DATASOURCE_ASSET_USER: *psqlUsername
EDC_DATASOURCE_ASSET_URL: &SokratesPsqlConStr "jdbc:postgresql://sokrates-postgresql:5432/edc"
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/contract-definition-store-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/contract-definition-store-sql
EDC_DATASOURCE_CONTRACTDEFINITION_NAME: contractdefinition
EDC_DATASOURCE_CONTRACTDEFINITION_USER: *psqlUsername
EDC_DATASOURCE_CONTRACTDEFINITION_URL: *SokratesPsqlConStr
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/contract-negotiation-store-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/contract-negotiation-store-sql
EDC_DATASOURCE_CONTRACTNEGOTIATION_NAME: contractnegotiation
EDC_DATASOURCE_CONTRACTNEGOTIATION_USER: *psqlUsername
EDC_DATASOURCE_CONTRACTNEGOTIATION_URL: *SokratesPsqlConStr
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/policy-store-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/policy-store-sql
EDC_DATASOURCE_POLICY_NAME: policy
EDC_DATASOURCE_POLICY_USER: *psqlUsername
EDC_DATASOURCE_POLICY_URL: *SokratesPsqlConStr
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/sql/transfer-process-store-sql
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/store/sql/transfer-process-store-sql
EDC_DATASOURCE_TRANSFERPROCESS_NAME: transferprocess
EDC_DATASOURCE_TRANSFERPROCESS_USER: *psqlUsername
EDC_DATASOURCE_TRANSFERPROCESS_URL: *SokratesPsqlConStr
@@ -541,13 +541,12 @@ sokratesedccontrolplane:
"publicApiUrl": "http://sokrates-edc-dataplane:8185/api/public/"
}
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/data-plane-transfer
- # TODO Can this be removed?
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/data-plane-transfer
EDC_TRANSFER_PROXY_ENDPOINT: http://sokrates-edc-dataplane:8185/api/public/
EDC_TRANSFER_PROXY_TOKEN_SIGNER_PRIVATEKEY_ALIAS: my-sokrates-daps-key # for simplicity this example re-uses the DAPS keys.
EDC_TRANSFER_PROXY_TOKEN_VERIFIER_PUBLICKEY_ALIAS: my-sokrates-daps-crt # for simplicity this example re-uses the DAPS keys.
- # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/http-receiver
+ # see extension https://github.com/eclipse-dataspaceconnector/DataSpaceConnector/tree/main/extensions/control-plane/http-receiver
EDC_RECEIVER_HTTP_ENDPOINT: http://sokrates-backend-application
###############
diff --git a/edc-tests/src/test/java/net/catenax/edc/tests/DataManagementAPI.java b/edc-tests/src/test/java/net/catenax/edc/tests/DataManagementAPI.java
index 3f0899664..5338a4f5e 100644
--- a/edc-tests/src/test/java/net/catenax/edc/tests/DataManagementAPI.java
+++ b/edc-tests/src/test/java/net/catenax/edc/tests/DataManagementAPI.java
@@ -243,7 +243,7 @@ private DataManagementApiPolicy mapPolicy(Policy policy) {
private DataManagementApiPolicyDefinition mapPolicyDefinition(Policy policy) {
final DataManagementApiPolicyDefinition apiObject = new DataManagementApiPolicyDefinition();
- apiObject.uid = policy.getId();
+ apiObject.id = policy.getId();
apiObject.policy = mapPolicy(policy);
return apiObject;
}
@@ -401,7 +401,7 @@ private static class DataManagementApiDataAddress {
@Data
private static class DataManagementApiPolicyDefinition {
- private String uid;
+ private String id;
private DataManagementApiPolicy policy;
}
diff --git a/pom.xml b/pom.xml
index 51b0b1283..d029601c0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,7 +18,7 @@
net.catenax.edc
product-edc-parent
- 0.1.0
+ 0.1.1
pom
product-edc
@@ -48,7 +48,7 @@
3.3.0
3.2.2
- 2.24.1
+ 2.25.0
3.1.0
3.4.1
2.0.0
@@ -65,10 +65,10 @@
4.2.0
- 0.0.1-20220818-SNAPSHOT
+ 0.0.1-20220902-SNAPSHOT
1.2.2
- 42.4.2
- 9.1.5
+ 42.5.0
+ 9.2.2
5.9.0
@@ -82,7 +82,7 @@
4.9.3
1.17.3
2.0.0-beta1
- 1.2.11
+ 1.4.0
2.2
@@ -328,6 +328,11 @@
data-encryption
${project.version}
+
+ net.catenax.edc.extensions
+ cx-oauth2
+ ${project.version}
+
@@ -688,11 +693,6 @@
data-plane-selector-spi
${org.eclipse.dataspaceconnector.version}
-
- org.eclipse.dataspaceconnector
- data-plane-selector-store
- ${org.eclipse.dataspaceconnector.version}
-
org.eclipse.dataspaceconnector
data-plane-spi
@@ -888,6 +888,16 @@
oauth2-spi
${org.eclipse.dataspaceconnector.version}
+
+ org.eclipse.dataspaceconnector
+ jwt-spi
+ ${org.eclipse.dataspaceconnector.version}
+
+
+ org.eclipse.dataspaceconnector
+ jwt-core
+ ${org.eclipse.dataspaceconnector.version}
+
org.eclipse.dataspaceconnector
observability-api