|
1 | 1 |
|
2 | 2 | # Tractus-X IdentityHub - a comprehensive DCP Wallet |
3 | 3 |
|
4 | | -| [!WARNING] this project is under heavy development, expect bugs, problems and radical changes! | |
5 | | -|------------------------------------------------------------------------------------------------| |
| 4 | +> [!WARNING] |
| 5 | +> This project is under heavy development, expect bugs, problems and radical changes! |
6 | 6 |
|
7 | | -Welcome Contributor! Feel free to join our Identity Hub Weeklys if you want to contibute, or our office hours. |
| 7 | +Welcome Contributor! Feel free to join our Identity Hub Weeklys if you want to contribute, or our office hours. |
8 | 8 | You will find the links here: https://eclipse-tractusx.github.io/community/open-meetings/#Identity%20Hub%20Weekly |
9 | 9 |
|
10 | 10 | Also feel free to contact us on our matrix chat: https://matrix.to/#/#tractusx-identity-hub:matrix.eclipse.org |
11 | 11 |
|
12 | 12 | We are working at the moment to bring the current implemented functionalities from the upstream identity hub, test and integrate them here to offer a deployment in Helm Charts and publish our images in docker hub, so you can use also this wallet. |
13 | 13 |
|
| 14 | +## Table of Contents |
| 15 | + |
| 16 | +1. [About The Project](#about-the-project) |
| 17 | +2. [System Architecture](#system-architecture) |
| 18 | +3. [Components](#components) |
| 19 | + - [IdentityHub](#identityhub) |
| 20 | + - [IssuerService](#issuerservice) |
| 21 | +4. [Getting Started](#getting-started) |
| 22 | + - [IdentityHub](#identityhub-1) |
| 23 | + - [IssuerService](#issuerservice-1) |
| 24 | +5. [Deployment](#deployment) |
| 25 | + - [Helm Chart](#helm-chart) |
| 26 | + - [Localhost](#localhost) |
| 27 | +6. [Documentation Hub](#documentation-hub) |
| 28 | +7. [License](#license) |
| 29 | + |
| 30 | +--- |
| 31 | + |
14 | 32 | ## About The Project |
15 | 33 |
|
16 | | -The Tractus-X IdentityHub is a specialized variant of |
17 | | -the [IdentityHub project](https://github.com/eclipse-edc/IdentityHub/). |
18 | | -It contains a DCP CredentialService implementation and a SecureTokenService, preconfigured for use in Tractus-X. |
| 34 | +The Tractus-X IdentityHub is a specialized, production-ready distribution of the upstream [Eclipse EDC IdentityHub project](https://github.com/eclipse-edc/IdentityHub/), tailored specifically for the Tractus-X ecosystem. |
| 35 | + |
| 36 | +This project provides deployable versions of two core components: |
| 37 | + |
| 38 | +- **IdentityHub**: A comprehensive DCP (Decentralized Claims Protocol) wallet that manages verifiable credentials and decentralized identities |
| 39 | +- **IssuerService**: A service for issuing verifiable credentials to participants in the dataspace |
| 40 | + |
| 41 | +Both components implement the Decentralized Claims Protocol (DCP) specification, ensuring interoperability and standardized credential exchange within the Tractus-X ecosystem. The project offers ready-to-deploy Helm charts with PostgreSQL and HashiCorp Vault integration for production environments, as well as memory-based variants for development and testing. |
| 42 | + |
| 43 | +## System Architecture |
| 44 | + |
| 45 | +The Tractus-X IdentityHub consists of two main components that work together to provide complete credential lifecycle management: |
| 46 | + |
| 47 | +```mermaid |
| 48 | +flowchart LR |
| 49 | + subgraph Issuer["Issuer"] |
| 50 | + direction TB |
| 51 | + IS[tractusx-issuerservice<br/>Issuer] |
| 52 | + IS_DB[(PostgreSQL<br/>Database)] |
| 53 | + IS_VAULT[HashiCorp Vault<br/>Secret Storage] |
| 54 | +
|
| 55 | + IS -->|Store Data| IS_DB |
| 56 | + IS -->|Store Secrets| IS_VAULT |
| 57 | + end |
| 58 | + subgraph Holder["Holder"] |
| 59 | + direction TB |
| 60 | + IH[tractusx-identityhub<br/>Holder] |
| 61 | + IH_DB[(PostgreSQL<br/>Database)] |
| 62 | + IH_VAULT[HashiCorp Vault<br/>Secret Storage] |
| 63 | +
|
| 64 | + IH -->|Store Data| IH_DB |
| 65 | + IH -->|Store Secrets| IH_VAULT |
| 66 | + end |
| 67 | + subgraph DataSpace["Data Space Participant"] |
| 68 | + direction TB |
| 69 | + CONN[Tractus-X EDC<br/>Connector] |
| 70 | + end |
| 71 | + %% Issuance Flow |
| 72 | + IH <-->|DCP Protocol<br/>Credential Request & Delivery| IS |
| 73 | + %% Presentation Flow |
| 74 | + CONN <-->|Presentation Query<br/>/presentation/query| IH |
| 75 | + style IH fill:#e1f5ff |
| 76 | + style IS fill:#fff4e1 |
| 77 | + style CONN fill:#d4edda |
| 78 | + style IH_DB fill:#336791 |
| 79 | + style IS_DB fill:#336791 |
| 80 | + style IH_VAULT fill:#000000,color:#ffffff |
| 81 | + style IS_VAULT fill:#000000,color:#ffffff |
| 82 | +``` |
| 83 | + |
| 84 | +**Key Interactions:** |
| 85 | + |
| 86 | +1. **Credential Issuance (IssuerService ↔ IdentityHub)**: |
| 87 | + - Holder's IdentityHub requests credentials from IssuerService via DCP Issuance Flow |
| 88 | + - IssuerService evaluates attestations and rules |
| 89 | + - Credentials are signed and delivered to holder's IdentityHub for storage |
| 90 | + |
| 91 | +2. **Credential Presentation (Connector ↔ IdentityHub)**: |
| 92 | + - Tractus-X EDC Connector requests credential presentation via `/presentation/query` endpoint |
| 93 | + - IdentityHub creates verifiable presentations from stored credentials |
| 94 | + - Presentations are sent to connector for validation during dataspace interactions |
| 95 | + |
| 96 | +## Components |
| 97 | + |
| 98 | +### IdentityHub |
| 99 | + |
| 100 | +The IdentityHub serves as a comprehensive identity wallet and credential management system. Its primary purposes are: |
| 101 | + |
| 102 | +- **Credential Storage**: Securely store and manage verifiable credentials received from issuers |
| 103 | +- **Identity Management**: Manage decentralized identities (DIDs) and their associated key pairs |
| 104 | +- **Credential Presentation**: Present credentials to verifiers during DCP flows |
| 105 | +- **Self-Issued ID Tokens**: Create and manage self-issued ID Tokens |
| 106 | + |
| 107 | +### IssuerService |
| 108 | + |
| 109 | +The IssuerService is responsible for the issuance of verifiable credentials to dataspace participants. Its primary purposes are: |
| 110 | + |
| 111 | +- **Credential Issuance**: Issue verifiable credentials to participants based on predefined credential definitions |
| 112 | +- **Attestation Management**: Define and manage attestation requirements for credential issuance |
| 113 | +- **Credential Lifecycle**: Handle the complete lifecycle of issued credentials, including revocation |
| 114 | +- **Standards Compliance**: Ensure all issued credentials comply with DCP specifications and dataspace policies |
| 115 | + |
| 116 | +## Getting Started |
| 117 | + |
| 118 | +This project provides Helm charts for deploying both IdentityHub and IssuerService components. Each component is available in two variants: |
| 119 | + |
| 120 | +### IdentityHub |
| 121 | + |
| 122 | +1. [`tractusx-identityhub`](./charts/tractusx-identityhub/README.md): The recommended, production-ready version that uses PostgreSQL as database and HashiCorp Vault as secret storage. |
| 123 | +2. [`tractusx-identityhub-memory`](./charts/tractusx-identityhub-memory/README.md): An ephemeral, memory-only version that stores data and secrets in memory. **Please only use this for demo or testing purposes!** |
| 124 | + |
| 125 | +### IssuerService |
| 126 | + |
| 127 | +1. [`tractusx-issuerservice`](./charts/tractusx-issuerservice/README.md): The recommended, production-ready version that uses PostgreSQL as database and HashiCorp Vault as secret storage. |
| 128 | +2. [`tractusx-issuerservice-memory`](./charts/tractusx-issuerservice-memory/README.md): An ephemeral, memory-only version that stores data and secrets in memory. **Please only use this for demo or testing purposes!** |
| 129 | + |
| 130 | +## Deployment |
19 | 131 |
|
20 | | -## Getting started |
| 132 | +### Helm Chart |
21 | 133 |
|
22 | | -As all Tractus-X applications, IdentityHub is distributed as helm chart, of which there are two variants: |
| 134 | +To deploy using Helm charts, please refer to the documentation for each variant listed in the [Getting Started](#getting-started) section above. Each chart provides detailed configuration options, prerequisites, and deployment instructions. |
23 | 135 |
|
24 | | -1. `tractusx-identityhub`: the recommended, production-ready version that uses PostgreSQL as database and Hashicorp |
25 | | - Vault as secret storage. |
26 | | -2. `tractusx-identityhub-memory`: an ephemeral, memory-only version that stores data and secrets in memory. **Please |
27 | | - only use this for demo or testing purposes!** |
| 136 | +> [!NOTE] |
| 137 | +> This project is still under heavy development. For the most up-to-date deployment experience, it is recommended to follow the [Localhost](#localhost) deployment instructions below. |
28 | 138 |
|
29 | | -Please refer to the respective [documentation](./charts/tractusx-identityhub/README.md) for more information on how to |
30 | | -run it. |
| 139 | +### Localhost |
31 | 140 |
|
32 | | -As all Tractus-X applications, IssuerService is distributed as helm chart, of which there are two variants: |
| 141 | +For detailed deployment instructions in a localhost environment, please refer to the [Installation Guide](./INSTALL.md). |
33 | 142 |
|
34 | | -1. `tractusx-issuerservice`: the recommended, production-ready version that uses PostgreSQL as database and Hashicorp |
35 | | - Vault as secret storage. |
36 | | -2. `tractusx-issuerservice-memory`: an ephemeral, memory-only version that stores data and secrets in memory. **Please |
37 | | - only use this for demo or testing purposes!** |
| 143 | +> [!NOTE] |
| 144 | +> While running the applications natively as Java processes or directly as Docker images is possible, it is highly recommended to deploy using the official Helm charts with PostgreSQL and HashiCorp Vault. The Helm chart deployment ensures proper configuration, security, and scalability. |
38 | 145 |
|
39 | | -Please refer to the respective [documentation](./charts/tractusx-issuerservice/README.md) for more information on how to |
40 | | -run it. |
| 146 | +## Documentation Hub |
41 | 147 |
|
42 | | -> Note that running the application natively as Java process, or directly as Docker image is possible, but is not |
43 | | -> supported by the Tractus-X IdentityHub team. Please use the official Helm chart. |
| 148 | +For developer resources, as well as best practices for development and testing, can be found [in this file](./docs/README.md). |
44 | 149 |
|
45 | 150 | ## License |
46 | 151 |
|
|
0 commit comments