Introduction# In recent years, the importance of data sharing and distribution between organizations has been growing. However, simply exposing APIs makes it difficult to control “who” can access “which data” under “what conditions.”
Dataspaces are a concept designed to solve this challenge. They provide a mechanism for data owners to maintain sovereignty while securely sharing data with trusted parties.
In this article, we will use Eclipse EDC (Eclipse Dataspace Components) , an implementation platform for dataspaces, to experience data exchange flows in a local environment.
Table of Contents# What is a Dataspace? Overview of Eclipse EDC Environment Setup Executing the Data Exchange Flow Creating a GUI Dashboard Summary What is a Dataspace?# Challenges with Traditional Data Sharing# Traditional API integrations had the following challenges:
Difficult access control : Once an API key is issued, any data can be retrievedUsage condition management : Conditions like “this data is for internal use only” cannot be technically enforcedAuditing and tracking : It is difficult to track who retrieved data and whenThe Dataspace Solution# Dataspaces solve these issues with the following mechanism:
┌ │ │ │ │ │ │ └ ┌ │ │ │ │ │ │ │ │ └ ─ ─ ─ ─ ─ ─ ─ ─ ─ 従 C 課 ─ ─ デ 1 2 3 4 メ ─ ─ 来 o 題 ─ ─ ー . . . . リ ─ ─ の n : ─ ─ タ ッ ─ ─ A s ─ ─ ス C P 両 C ト ─ ─ P u 誰 ─ ─ ペ o r 者 o : ─ ─ I m で ─ ─ ー n o : n ─ ─ 連 e も ─ ─ ス s v s 条 ─ ─ 携 r デ ─ ─ u i 契 u 件 ─ ─ ー ─ ─ m d 約 m 付 ─ ─ ─ タ ─ ─ e e 交 e き ─ ─ ─ ← 取 ─ ─ r r 渉 r ア ─ ─ ─ ─ 得 ─ ─ : : ・ : ク ─ ─ ─ ─ 可 ─ ─ 合 セ ─ ─ ─ ─ 能 ─ ─ 「 「 意 契 ス ─ ─ A ─ 、 ─ ─ 〇 こ 約 、 ─ ─ P デ 条 ─ ─ 〇 の に 監 ─ ─ I ー 件 ─ ─ の 条 基 査 ─ ─ キ タ 管 ─ ─ デ 件 づ 可 ─ ─ ー ─ 理 ─ ─ ー を き 能 ─ ─ ─ ─ な ─ ─ タ 満 デ 、 ─ ─ ─ ─ し ─ ─ が た ー 主 ─ ─ ─ ─ ─ ─ 欲 せ タ 権 ─ ─ ─ ─ ─ し ば 取 維 ─ ─ → ─ ─ い 提 得 持 ─ ─ ─ ─ 」 供 ─ ─ P ─ ─ ( す ─ ─ r ─ ─ カ る ─ ─ o ─ ─ タ 」 ─ ─ v ─ ─ ロ ( ─ ─ i ─ ─ グ ポ ─ ─ d ─ ─ 確 リ ─ ─ e ─ ─ 認 シ ─ ─ r ─ ─ ) ー ─ ─ ─ ─ 提 ─ ─ A ─ ─ 示 ─ ─ P ─ ─ ) ─ ─ I ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ │ │ ─ ─ ─ ─ ─ ─ ─ ┐ │ │ ┘ ┐ │ │ ┘
Key Terminology# Term Description Connector Software for participating in a dataspace. Both the Provider and Consumer have one Provider The party that provides data Consumer The party that retrieves data Catalog A list of data published by the Provider Policy Conditions for data access (who, when, and how it can be used) Contract An agreement between the Provider and Consumer EDR Endpoint Data Reference. Temporary access information for data retrieval
Overview of Eclipse EDC# Eclipse EDC is an open-source dataspace implementation platform developed by the Eclipse Foundation.
Architecture# ┌ │ ├ │ │ │ │ │ │ │ │ │ │ └ ─ ─ ─ ─ ─ ─ ─ ─ ┌ │ │ │ │ │ └ M ─ ─ ─ ─ ─ a ─ ─ ─ ─ - - - ─ n ─ ─ ─ ─ C ─ a ─ ─ ─ ─ o カ 契 ポ ─ g ─ ─ ─ ─ n タ 約 リ ─ e ─ ─ ─ ─ t ロ 交 シ ─ m ─ ─ ─ ─ r グ 渉 ー ─ e ─ ─ ─ ─ o 管 評 ─ n ─ ─ ─ ─ l 理 価 ─ t ─ ─ ─ ─ ─ ─ ─ ─ ─ P ─ A ─ ─ ─ ─ l ─ P ─ ─ ─ ─ a │ │ ─ I ─ ─ ─ ─ n │ ─ ─ ─ ─ ─ e ─ ( ─ ─ ─ ─ ─ R ─ ─ ─ ─ ─ E ─ ─ E ─ ┐ │ │ │ │ ┘ S ─ ─ D ─ │ T ─ ─ C ─ - - ) ─ ─ ─ - ─ ─ C ─ デ 認 ─ ─ o ─ ┌ │ │ ー プ 証 └ ─ ─ n ─ ─ タ ロ ・ ─ ─ ─ n ─ ─ 転 キ 認 ─ D ─ ─ e ─ ─ 送 シ 可 ─ S ─ ─ c ─ ─ D ─ P ─ ─ t ─ ─ a ─ ─ ─ o ─ ─ t ─ P ─ ─ r ─ ─ a ─ r ─ ─ ─ ─ │ │ ─ o ─ ─ ─ ─ P ─ t ─ ─ ─ ─ l │ ─ o ─ ─ ─ ─ a ─ c ─ ─ ─ ─ n ─ o ─ ─ ─ ─ e ─ l ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ( ─ ─ ─ ─ ─ コ ─ ─ ─ ─ ─ ネ ─ ─ ─ ┐ │ │ ┘ ク ─ ─ ─ タ ─ ─ ─ 間 ─ ─ ─ 通 ─ ─ ─ 信 ─ ─ ─ ) ─ ─ ─ ─ ─ ─ │ │ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ ─ ┐ ┤ │ │ ┘ │
Main API Endpoints# Endpoint Purpose /management/v3/assetsAsset (data) management /management/v3/policydefinitionsPolicy management /management/v3/contractdefinitionsContract definition management /management/v3/catalog/requestCatalog retrieval /management/v3/contractnegotiationsContract negotiation /management/v3/transferprocessesData transfer /management/v3/edrsEDR (access token) retrieval
Environment Setup# Prerequisites# Docker & Docker Compose Java 17 (for Gradle builds) Python 3 (for the proxy server) 1. Clone EDC Samples# g c i d t e c d l c o - n s e a m p - l d e e s p t h 1 h t t p s : / / g i t h u b . c o m / e c l i p s e - e d c / S a m p l e s . g i t e d c - s a m p l e s 2. Build the Connectors# # # / / F g F g o r o r r a r a d d C l P l o e r e n w o w s v u t i t m r d r e a e a r n r n s s ( f ( f b e w e a r i r s : t : i t h t c r r a D a c n a n o s t s n f a f n e P e e r l r c - a - t 0 n 0 o 0 e 3 r - ) - ) p c r o e n r s e u q m u e i r s - i p t u e l s l : : c p o r n o n v e i c d t e o r r - : p b r u o i x l y d - d a t a - p l a n e : b u i l d
3. Create Docker Configuration Files# Dockerfile.consumer
F W C E R O O N O R P T M K Y R D Y e I t P c R r O l a I i / n N p a s T s p f e p e [ - r " t / j e t a m r v u a a r n " i s , n f : e " 1 r - 7 - j - 0 a j 0 r r - " e p , r e " r / e a q p u p i / s c i o t n e n s e / c c t o o n r n . e j c a t r o " r ] / b u i l d / l i b s / c o n n e c t o r . j a r / a p p / c o n n e c t o r . j a r
Dockerfile.provider
F W C E R O O N O R P T M K Y R D Y e I t P c R r O l a I i / n N p a s T s p f e p e [ - r " t / j e t a m r v u a a r n " i s , n f : e " 1 r - 7 - j - 0 a j 3 r r - " e c , o n " s / u a m p e p r / - c p o u n l n l e / c p t r o o r v . i j d a e r r " - ] p r o x y - d a t a - p l a n e / b u i l d / l i b s / c o n n e c t o r . j a r / a p p / c o n n e c t o r . j a r
docker-compose.yml
s e r c p v o r i n b c e p o b c e p c s u o n o o v u o n o o e u i c d n v E l r - - i i c d n v E l r - - - s m l o o t i D u t d l o o t i D u t : e d n c a r C m s " " e d n c a r C m s " " " r : t k i o _ e / : 2 2 r : t k i o _ e / : 1 1 1 : e e n n F s c 9 9 : e e n n F s c 9 9 9 x r e m S : o 1 1 x r e m S : o 1 1 2 t f r e _ n 9 9 t f r e _ n 9 9 9 : i _ n C f 3 4 : i _ n C f 3 4 1 l n t O i : : l n t O i : : : . e a : N g 2 2 . e a : N g 1 1 1 : m F / 9 9 : m F / 9 9 9 e I c 1 1 e I p 1 1 2 D : G o 9 9 D : G r 9 9 9 o : n 3 4 o : o 3 4 1 c e s " " c e v " " " k d / u k d / i e c a m e c a d r - p e # # r - p e # # # f c p r f p p r i o / . M D i r / - M D D l n c p a S l o c d a S a e s o r n P e v o a n P t . u n o a . i n t a a c m f p g P p d f a g P P o e i e e r r e i p e r l n r g r m o o r g l m o a s / t e t v / a e t n u c i n o i p n n o e m o e t c d r e t c e n s o e o . o P r s : A l r v p A l u u / P i r P b m a I d o I l e p e p i r p r e c . / . r p c p t A r o r i P o n o e I p f p s e i e : r g r / t / t a i c i p e o e p s n s / s c u o m n e f r i . g p / r p o r p o e v r i t d i e e r s . : p r r o o p e r t i e s : r o 4. Start the Connectors# Verify startup:
d # o c I k f e r " R c u o n m t p i o m s e e l o g s r e a - d t y a " i l i s 1 0 d i s p l a y e d , i t w a s s u c c e s s f u l Executing the Data Exchange Flow# Overall Flow# ┌ │ ├ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └ ─ ─ ─ ─ ─ ─ ─ ─ S ├ ├ └ S └ S └ S └ S ├ └ ─ ─ ─ t ─ ─ ─ t ─ t ─ t ─ t ─ ─ ─ ─ ─ e ─ ─ ─ e ─ e ─ e ─ e ─ ─ ─ ─ ─ p p p p p ─ ─ ─ ア ポ コ C C C C C ─ ─ ─ 1 セ リ ン 2 o 3 o 4 o 5 o o ─ ─ ─ : ッ シ ト : n : n : n : n n ─ ─ ─ ト ー ラ s s s s s ─ ─ ─ P 登 定 ク カ u 契 u デ u デ u u ─ ─ ─ r 録 義 ト タ m 約 m ー m ー m m ─ ─ ─ o ( ( 定 ロ e 交 e タ e タ e e ─ ─ ─ v ど ど 義 グ r 渉 r 転 r 取 r r ─ ─ ─ i ん ん ( 取 送 : 得 : ─ ─ ─ d な な ア 得 → ↔ → ─ ─ ─ e デ 条 セ 契 E ─ ─ ─ r ー 件 ッ P P 約 D P ─ ─ ─ 準 タ で ト r r に R r ─ ─ ─ 備 を 提 と o o 基 ( o ─ ─ E ─ 提 供 ポ v v づ ア v ─ ─ D ─ 供 す リ i i き ク i ─ ─ C ─ す る シ d d T セ d ─ ─ デ ─ る か ー e e r ス e ─ ─ ー ─ か ) の r r a ト r ─ ─ タ ─ ) 紐 : : n ー ─ ─ 交 ─ 付 s ク D ─ ─ 換 ─ け 「 条 f ン a ─ ─ フ ─ ) 何 件 e ) t ─ ─ ロ ─ の に r 取 a ─ ─ ー ─ デ 合 開 得 P ─ ─ ─ ー 意 始 l ─ ─ ─ タ し a ─ ─ ─ が 契 n ─ ─ ─ あ 約 e ─ ─ ─ り 締 : ─ ─ ─ ま 結 ─ ─ ─ す ト ─ ─ ─ か ー ─ ─ ─ ? ク ─ ─ ─ 」 ン ─ ─ ─ で ─ ─ ─ デ ─ ─ ─ ー ─ ─ ─ タ ─ ─ ─ 取 ─ ─ ─ 得 ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ │ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ │ ─ ─ │ ─ │ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ │ │ ─ ─ ─ │ ─ ─ ─ │ ─ ─ ─ ─ ┐ ┤ │ │ │ │ │ │ ┘
Step 1: Register Data with the Provider# Create an Asset (define the data to be provided)
┌ │ ├ │ │ │ │ │ │ │ │ │ │ └ ─ ─ ─ ─ ─ ─ ─ ─ ┌ │ │ │ │ │ └ M ─ ─ ─ ─ ─ a ─ ─ ─ ─ - - - ─ n ─ ─ ─ ─ C ─ a ─ ─ ─ ─ o カ 契 ポ ─ g ─ ─ ─ ─ n タ 約 リ ─ e ─ ─ ─ ─ t ロ 交 シ ─ m ─ ─ ─ ─ r グ 渉 ー ─ e ─ ─ ─ ─ o 管 評 ─ n ─ ─ ─ ─ l 理 価 ─ t ─ ─ ─ ─ ─ ─ ─ ─ ─ P ─ A ─ ─ ─ ─ l ─ P ─ ─ ─ ─ a │ │ ─ I ─ ─ ─ ─ n │ ─ ─ ─ ─ ─ e ─ ( ─ ─ ─ ─ ─ R ─ ─ ─ ─ ─ E ─ ─ E ─ ┐ │ │ │ │ ┘ S ─ ─ D ─ │ T ─ ─ C ─ - - ) ─ ─ ─ - ─ ─ C ─ デ 認 ─ ─ o ─ ┌ │ │ ー プ 証 └ ─ ─ n ─ ─ タ ロ ・ ─ ─ ─ n ─ ─ 転 キ 認 ─ D ─ ─ e ─ ─ 送 シ 可 ─ S ─ ─ c ─ ─ D ─ P ─ ─ t ─ ─ a ─ ─ ─ o ─ ─ t ─ P ─ ─ r ─ ─ a ─ r ─ ─ ─ ─ │ │ ─ o ─ ─ ─ ─ P ─ t ─ ─ ─ ─ l │ ─ o ─ ─ ─ ─ a ─ c ─ ─ ─ ─ n ─ o ─ ─ ─ ─ e ─ l ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ( ─ ─ ─ ─ ─ コ ─ ─ ─ ─ ─ ネ ─ ─ ─ ┐ │ │ ┘ ク ─ ─ ─ タ ─ ─ ─ 間 ─ ─ ─ 通 ─ ─ ─ 信 ─ ─ ─ ) ─ ─ ─ ─ ─ ─ │ │ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ ─ ┐ ┤ │ │ ┘ │
0
Create a Policy (define access conditions)
┌ │ ├ │ │ │ │ │ │ │ │ │ │ └ ─ ─ ─ ─ ─ ─ ─ ─ ┌ │ │ │ │ │ └ M ─ ─ ─ ─ ─ a ─ ─ ─ ─ - - - ─ n ─ ─ ─ ─ C ─ a ─ ─ ─ ─ o カ 契 ポ ─ g ─ ─ ─ ─ n タ 約 リ ─ e ─ ─ ─ ─ t ロ 交 シ ─ m ─ ─ ─ ─ r グ 渉 ー ─ e ─ ─ ─ ─ o 管 評 ─ n ─ ─ ─ ─ l 理 価 ─ t ─ ─ ─ ─ ─ ─ ─ ─ ─ P ─ A ─ ─ ─ ─ l ─ P ─ ─ ─ ─ a │ │ ─ I ─ ─ ─ ─ n │ ─ ─ ─ ─ ─ e ─ ( ─ ─ ─ ─ ─ R ─ ─ ─ ─ ─ E ─ ─ E ─ ┐ │ │ │ │ ┘ S ─ ─ D ─ │ T ─ ─ C ─ - - ) ─ ─ ─ - ─ ─ C ─ デ 認 ─ ─ o ─ ┌ │ │ ー プ 証 └ ─ ─ n ─ ─ タ ロ ・ ─ ─ ─ n ─ ─ 転 キ 認 ─ D ─ ─ e ─ ─ 送 シ 可 ─ S ─ ─ c ─ ─ D ─ P ─ ─ t ─ ─ a ─ ─ ─ o ─ ─ t ─ P ─ ─ r ─ ─ a ─ r ─ ─ ─ ─ │ │ ─ o ─ ─ ─ ─ P ─ t ─ ─ ─ ─ l │ ─ o ─ ─ ─ ─ a ─ c ─ ─ ─ ─ n ─ o ─ ─ ─ ─ e ─ l ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ( ─ ─ ─ ─ ─ コ ─ ─ ─ ─ ─ ネ ─ ─ ─ ┐ │ │ ┘ ク ─ ─ ─ タ ─ ─ ─ 間 ─ ─ ─ 通 ─ ─ ─ 信 ─ ─ ─ ) ─ ─ ─ ─ ─ ─ │ │ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ ─ ┐ ┤ │ │ ┘ │
1
Create a Contract Definition (link assets with policies)
┌ │ ├ │ │ │ │ │ │ │ │ │ │ └ ─ ─ ─ ─ ─ ─ ─ ─ ┌ │ │ │ │ │ └ M ─ ─ ─ ─ ─ a ─ ─ ─ ─ - - - ─ n ─ ─ ─ ─ C ─ a ─ ─ ─ ─ o カ 契 ポ ─ g ─ ─ ─ ─ n タ 約 リ ─ e ─ ─ ─ ─ t ロ 交 シ ─ m ─ ─ ─ ─ r グ 渉 ー ─ e ─ ─ ─ ─ o 管 評 ─ n ─ ─ ─ ─ l 理 価 ─ t ─ ─ ─ ─ ─ ─ ─ ─ ─ P ─ A ─ ─ ─ ─ l ─ P ─ ─ ─ ─ a │ │ ─ I ─ ─ ─ ─ n │ ─ ─ ─ ─ ─ e ─ ( ─ ─ ─ ─ ─ R ─ ─ ─ ─ ─ E ─ ─ E ─ ┐ │ │ │ │ ┘ S ─ ─ D ─ │ T ─ ─ C ─ - - ) ─ ─ ─ - ─ ─ C ─ デ 認 ─ ─ o ─ ┌ │ │ ー プ 証 └ ─ ─ n ─ ─ タ ロ ・ ─ ─ ─ n ─ ─ 転 キ 認 ─ D ─ ─ e ─ ─ 送 シ 可 ─ S ─ ─ c ─ ─ D ─ P ─ ─ t ─ ─ a ─ ─ ─ o ─ ─ t ─ P ─ ─ r ─ ─ a ─ r ─ ─ ─ ─ │ │ ─ o ─ ─ ─ ─ P ─ t ─ ─ ─ ─ l │ ─ o ─ ─ ─ ─ a ─ c ─ ─ ─ ─ n ─ o ─ ─ ─ ─ e ─ l ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ( ─ ─ ─ ─ ─ コ ─ ─ ─ ─ ─ ネ ─ ─ ─ ┐ │ │ ┘ ク ─ ─ ─ タ ─ ─ ─ 間 ─ ─ ─ 通 ─ ─ ─ 信 ─ ─ ─ ) ─ ─ ─ ─ ─ ─ │ │ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ ─ ┐ ┤ │ │ ┘ │
2
Step 2: Retrieve the Catalog# From the Consumer, check the data published by the Provider:
┌ │ ├ │ │ │ │ │ │ │ │ │ │ └ ─ ─ ─ ─ ─ ─ ─ ─ ┌ │ │ │ │ │ └ M ─ ─ ─ ─ ─ a ─ ─ ─ ─ - - - ─ n ─ ─ ─ ─ C ─ a ─ ─ ─ ─ o カ 契 ポ ─ g ─ ─ ─ ─ n タ 約 リ ─ e ─ ─ ─ ─ t ロ 交 シ ─ m ─ ─ ─ ─ r グ 渉 ー ─ e ─ ─ ─ ─ o 管 評 ─ n ─ ─ ─ ─ l 理 価 ─ t ─ ─ ─ ─ ─ ─ ─ ─ ─ P ─ A ─ ─ ─ ─ l ─ P ─ ─ ─ ─ a │ │ ─ I ─ ─ ─ ─ n │ ─ ─ ─ ─ ─ e ─ ( ─ ─ ─ ─ ─ R ─ ─ ─ ─ ─ E ─ ─ E ─ ┐ │ │ │ │ ┘ S ─ ─ D ─ │ T ─ ─ C ─ - - ) ─ ─ ─ - ─ ─ C ─ デ 認 ─ ─ o ─ ┌ │ │ ー プ 証 └ ─ ─ n ─ ─ タ ロ ・ ─ ─ ─ n ─ ─ 転 キ 認 ─ D ─ ─ e ─ ─ 送 シ 可 ─ S ─ ─ c ─ ─ D ─ P ─ ─ t ─ ─ a ─ ─ ─ o ─ ─ t ─ P ─ ─ r ─ ─ a ─ r ─ ─ ─ ─ │ │ ─ o ─ ─ ─ ─ P ─ t ─ ─ ─ ─ l │ ─ o ─ ─ ─ ─ a ─ c ─ ─ ─ ─ n ─ o ─ ─ ─ ─ e ─ l ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ( ─ ─ ─ ─ ─ コ ─ ─ ─ ─ ─ ネ ─ ─ ─ ┐ │ │ ┘ ク ─ ─ ─ タ ─ ─ ─ 間 ─ ─ ─ 通 ─ ─ ─ 信 ─ ─ ─ ) ─ ─ ─ ─ ─ ─ │ │ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ ─ ┐ ┤ │ │ ┘ │
3
The response includes the “product data” published by the Provider and its Offer ID.
Step 3: Contract Negotiation# Start the contract negotiation using the Offer ID obtained from the catalog:
┌ │ ├ │ │ │ │ │ │ │ │ │ │ └ ─ ─ ─ ─ ─ ─ ─ ─ ┌ │ │ │ │ │ └ M ─ ─ ─ ─ ─ a ─ ─ ─ ─ - - - ─ n ─ ─ ─ ─ C ─ a ─ ─ ─ ─ o カ 契 ポ ─ g ─ ─ ─ ─ n タ 約 リ ─ e ─ ─ ─ ─ t ロ 交 シ ─ m ─ ─ ─ ─ r グ 渉 ー ─ e ─ ─ ─ ─ o 管 評 ─ n ─ ─ ─ ─ l 理 価 ─ t ─ ─ ─ ─ ─ ─ ─ ─ ─ P ─ A ─ ─ ─ ─ l ─ P ─ ─ ─ ─ a │ │ ─ I ─ ─ ─ ─ n │ ─ ─ ─ ─ ─ e ─ ( ─ ─ ─ ─ ─ R ─ ─ ─ ─ ─ E ─ ─ E ─ ┐ │ │ │ │ ┘ S ─ ─ D ─ │ T ─ ─ C ─ - - ) ─ ─ ─ - ─ ─ C ─ デ 認 ─ ─ o ─ ┌ │ │ ー プ 証 └ ─ ─ n ─ ─ タ ロ ・ ─ ─ ─ n ─ ─ 転 キ 認 ─ D ─ ─ e ─ ─ 送 シ 可 ─ S ─ ─ c ─ ─ D ─ P ─ ─ t ─ ─ a ─ ─ ─ o ─ ─ t ─ P ─ ─ r ─ ─ a ─ r ─ ─ ─ ─ │ │ ─ o ─ ─ ─ ─ P ─ t ─ ─ ─ ─ l │ ─ o ─ ─ ─ ─ a ─ c ─ ─ ─ ─ n ─ o ─ ─ ─ ─ e ─ l ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ( ─ ─ ─ ─ ─ コ ─ ─ ─ ─ ─ ネ ─ ─ ─ ┐ │ │ ┘ ク ─ ─ ─ タ ─ ─ ─ 間 ─ ─ ─ 通 ─ ─ ─ 信 ─ ─ ─ ) ─ ─ ─ ─ ─ ─ │ │ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ ─ ┐ ┤ │ │ ┘ │
4
When the negotiation is complete, the state becomes FINALIZED and a contractAgreementId is issued.
Step 4: Data Transfer# Once the contract is concluded, start the data transfer:
┌ │ ├ │ │ │ │ │ │ │ │ │ │ └ ─ ─ ─ ─ ─ ─ ─ ─ ┌ │ │ │ │ │ └ M ─ ─ ─ ─ ─ a ─ ─ ─ ─ - - - ─ n ─ ─ ─ ─ C ─ a ─ ─ ─ ─ o カ 契 ポ ─ g ─ ─ ─ ─ n タ 約 リ ─ e ─ ─ ─ ─ t ロ 交 シ ─ m ─ ─ ─ ─ r グ 渉 ー ─ e ─ ─ ─ ─ o 管 評 ─ n ─ ─ ─ ─ l 理 価 ─ t ─ ─ ─ ─ ─ ─ ─ ─ ─ P ─ A ─ ─ ─ ─ l ─ P ─ ─ ─ ─ a │ │ ─ I ─ ─ ─ ─ n │ ─ ─ ─ ─ ─ e ─ ( ─ ─ ─ ─ ─ R ─ ─ ─ ─ ─ E ─ ─ E ─ ┐ │ │ │ │ ┘ S ─ ─ D ─ │ T ─ ─ C ─ - - ) ─ ─ ─ - ─ ─ C ─ デ 認 ─ ─ o ─ ┌ │ │ ー プ 証 └ ─ ─ n ─ ─ タ ロ ・ ─ ─ ─ n ─ ─ 転 キ 認 ─ D ─ ─ e ─ ─ 送 シ 可 ─ S ─ ─ c ─ ─ D ─ P ─ ─ t ─ ─ a ─ ─ ─ o ─ ─ t ─ P ─ ─ r ─ ─ a ─ r ─ ─ ─ ─ │ │ ─ o ─ ─ ─ ─ P ─ t ─ ─ ─ ─ l │ ─ o ─ ─ ─ ─ a ─ c ─ ─ ─ ─ n ─ o ─ ─ ─ ─ e ─ l ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ( ─ ─ ─ ─ ─ コ ─ ─ ─ ─ ─ ネ ─ ─ ─ ┐ │ │ ┘ ク ─ ─ ─ タ ─ ─ ─ 間 ─ ─ ─ 通 ─ ─ ─ 信 ─ ─ ─ ) ─ ─ ─ ─ ─ ─ │ │ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ ─ ┐ ┤ │ │ ┘ │
5
Step 5: Retrieve the Data# Once the Transfer state becomes STARTED, retrieve the EDR and obtain the data:
┌ │ ├ │ │ │ │ │ │ │ │ │ │ └ ─ ─ ─ ─ ─ ─ ─ ─ ┌ │ │ │ │ │ └ M ─ ─ ─ ─ ─ a ─ ─ ─ ─ - - - ─ n ─ ─ ─ ─ C ─ a ─ ─ ─ ─ o カ 契 ポ ─ g ─ ─ ─ ─ n タ 約 リ ─ e ─ ─ ─ ─ t ロ 交 シ ─ m ─ ─ ─ ─ r グ 渉 ー ─ e ─ ─ ─ ─ o 管 評 ─ n ─ ─ ─ ─ l 理 価 ─ t ─ ─ ─ ─ ─ ─ ─ ─ ─ P ─ A ─ ─ ─ ─ l ─ P ─ ─ ─ ─ a │ │ ─ I ─ ─ ─ ─ n │ ─ ─ ─ ─ ─ e ─ ( ─ ─ ─ ─ ─ R ─ ─ ─ ─ ─ E ─ ─ E ─ ┐ │ │ │ │ ┘ S ─ ─ D ─ │ T ─ ─ C ─ - - ) ─ ─ ─ - ─ ─ C ─ デ 認 ─ ─ o ─ ┌ │ │ ー プ 証 └ ─ ─ n ─ ─ タ ロ ・ ─ ─ ─ n ─ ─ 転 キ 認 ─ D ─ ─ e ─ ─ 送 シ 可 ─ S ─ ─ c ─ ─ D ─ P ─ ─ t ─ ─ a ─ ─ ─ o ─ ─ t ─ P ─ ─ r ─ ─ a ─ r ─ ─ ─ ─ │ │ ─ o ─ ─ ─ ─ P ─ t ─ ─ ─ ─ l │ ─ o ─ ─ ─ ─ a ─ c ─ ─ ─ ─ n ─ o ─ ─ ─ ─ e ─ l ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ( ─ ─ ─ ─ ─ コ ─ ─ ─ ─ ─ ネ ─ ─ ─ ┐ │ │ ┘ ク ─ ─ ─ タ ─ ─ ─ 間 ─ ─ ─ 通 ─ ─ ─ 信 ─ ─ ─ ) ─ ─ ─ ─ ─ ─ │ │ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ ─ ┐ ┤ │ │ ┘ │
6
Response example:
┌ │ ├ │ │ │ │ │ │ │ │ │ │ └ ─ ─ ─ ─ ─ ─ ─ ─ ┌ │ │ │ │ │ └ M ─ ─ ─ ─ ─ a ─ ─ ─ ─ - - - ─ n ─ ─ ─ ─ C ─ a ─ ─ ─ ─ o カ 契 ポ ─ g ─ ─ ─ ─ n タ 約 リ ─ e ─ ─ ─ ─ t ロ 交 シ ─ m ─ ─ ─ ─ r グ 渉 ー ─ e ─ ─ ─ ─ o 管 評 ─ n ─ ─ ─ ─ l 理 価 ─ t ─ ─ ─ ─ ─ ─ ─ ─ ─ P ─ A ─ ─ ─ ─ l ─ P ─ ─ ─ ─ a │ │ ─ I ─ ─ ─ ─ n │ ─ ─ ─ ─ ─ e ─ ( ─ ─ ─ ─ ─ R ─ ─ ─ ─ ─ E ─ ─ E ─ ┐ │ │ │ │ ┘ S ─ ─ D ─ │ T ─ ─ C ─ - - ) ─ ─ ─ - ─ ─ C ─ デ 認 ─ ─ o ─ ┌ │ │ ー プ 証 └ ─ ─ n ─ ─ タ ロ ・ ─ ─ ─ n ─ ─ 転 キ 認 ─ D ─ ─ e ─ ─ 送 シ 可 ─ S ─ ─ c ─ ─ D ─ P ─ ─ t ─ ─ a ─ ─ ─ o ─ ─ t ─ P ─ ─ r ─ ─ a ─ r ─ ─ ─ ─ │ │ ─ o ─ ─ ─ ─ P ─ t ─ ─ ─ ─ l │ ─ o ─ ─ ─ ─ a ─ c ─ ─ ─ ─ n ─ o ─ ─ ─ ─ e ─ l ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ( ─ ─ ─ ─ ─ コ ─ ─ ─ ─ ─ ネ ─ ─ ─ ┐ │ │ ┘ ク ─ ─ ─ タ ─ ─ ─ 間 ─ ─ ─ 通 ─ ─ ─ 信 ─ ─ ─ ) ─ ─ ─ ─ ─ ─ │ │ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ ─ ┐ ┤ │ │ ┘ │
7
Creating a GUI Dashboard# While CLI operations are good for learning, a visual dashboard is more convenient for actual use.
This time, I created an EDC dashboard using Next.js + TypeScript.
Features# Connector Tab : Manage assets, policies, and contracts for Consumer/ProviderData Exchange Flow Tab : Execute the full flow via GUIContract Negotiation Tab : View list and status of contract negotiationsData Transfer Tab : View list and status of data transfersExecuting the Data Exchange Flow# In the “Data Exchange Flow” tab of the dashboard, you can execute data exchange in 5 steps.
Steps 1-2: Retrieve Catalog and Select Offer
Clicking the “Retrieve Catalog” button displays the data (product data) published by the Provider.
Steps 3-4: Contract Negotiation and Data Transfer
Once the contract negotiation is complete, you can select the transfer type (HTTP Pull/Push) and start the data transfer.
Step 5: Data Retrieval Complete
When all steps are complete, the actual data retrieved from the Provider is displayed in JSON format.
Managing Contract Negotiations and Data Transfers# Contract Negotiation List
Data Transfer List
You can check the status of contract negotiations and data transfers in each tab.
Resolving CORS# Since accessing the EDC Management API directly from a browser causes CORS errors,
I created a simple proxy server in Python:
┌ │ ├ │ │ │ │ │ │ │ │ │ │ └ ─ ─ ─ ─ ─ ─ ─ ─ ┌ │ │ │ │ │ └ M ─ ─ ─ ─ ─ a ─ ─ ─ ─ - - - ─ n ─ ─ ─ ─ C ─ a ─ ─ ─ ─ o カ 契 ポ ─ g ─ ─ ─ ─ n タ 約 リ ─ e ─ ─ ─ ─ t ロ 交 シ ─ m ─ ─ ─ ─ r グ 渉 ー ─ e ─ ─ ─ ─ o 管 評 ─ n ─ ─ ─ ─ l 理 価 ─ t ─ ─ ─ ─ ─ ─ ─ ─ ─ P ─ A ─ ─ ─ ─ l ─ P ─ ─ ─ ─ a │ │ ─ I ─ ─ ─ ─ n │ ─ ─ ─ ─ ─ e ─ ( ─ ─ ─ ─ ─ R ─ ─ ─ ─ ─ E ─ ─ E ─ ┐ │ │ │ │ ┘ S ─ ─ D ─ │ T ─ ─ C ─ - - ) ─ ─ ─ - ─ ─ C ─ デ 認 ─ ─ o ─ ┌ │ │ ー プ 証 └ ─ ─ n ─ ─ タ ロ ・ ─ ─ ─ n ─ ─ 転 キ 認 ─ D ─ ─ e ─ ─ 送 シ 可 ─ S ─ ─ c ─ ─ D ─ P ─ ─ t ─ ─ a ─ ─ ─ o ─ ─ t ─ P ─ ─ r ─ ─ a ─ r ─ ─ ─ ─ │ │ ─ o ─ ─ ─ ─ P ─ t ─ ─ ─ ─ l │ ─ o ─ ─ ─ ─ a ─ c ─ ─ ─ ─ n ─ o ─ ─ ─ ─ e ─ l ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ( ─ ─ ─ ─ ─ コ ─ ─ ─ ─ ─ ネ ─ ─ ─ ┐ │ │ ┘ ク ─ ─ ─ タ ─ ─ ─ 間 ─ ─ ─ 通 ─ ─ ─ 信 ─ ─ ─ ) ─ ─ ─ ─ ─ ─ │ │ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ ─ ┐ ┤ │ │ ┘ │
8
Summary# What We Learned# The concept of dataspaces : Differences from traditional API integrations, data sharing while maintaining sovereigntyEclipse EDC architecture : Control Plane / Data Plane, Management APIData exchange flow : Catalog retrieval -> Contract negotiation -> Data transfer -> Data retrievalHands-on practice : Building EDC with Docker, creating a GUI dashboardNext Steps# Leveraging policies : Setting policies with specific conditions (time limits, regional restrictions, etc.)Authentication and authorization : Vault integration and certificate management for production useFederated Catalog : Catalog search across multiple ProvidersCatena-X / GAIA-X : Integration with automotive industry and EU dataspace initiativesReferences# The code used in this article was created based on GitHub .