diff --git a/src/main/java/org/eclipse/tractusx/managedidentitywallets/config/MIWSettings.java b/src/main/java/org/eclipse/tractusx/managedidentitywallets/config/MIWSettings.java index 32ee74979..95c3bb747 100644 --- a/src/main/java/org/eclipse/tractusx/managedidentitywallets/config/MIWSettings.java +++ b/src/main/java/org/eclipse/tractusx/managedidentitywallets/config/MIWSettings.java @@ -38,5 +38,6 @@ public record MIWSettings(String host, String encryptionKey, String authorityWal List vcContexts, List summaryVcContexts, @DateTimeFormat(pattern = "dd-MM-yyyy") Date vcExpiryDate, Set supportedFrameworkVCTypes, - boolean enforceHttps, String contractTemplatesUrl) { + boolean enforceHttps, String contractTemplatesUrl, + List didDocumentContextUrls) { } \ No newline at end of file diff --git a/src/main/java/org/eclipse/tractusx/managedidentitywallets/service/WalletService.java b/src/main/java/org/eclipse/tractusx/managedidentitywallets/service/WalletService.java index 0de7d4a83..8a59b231b 100644 --- a/src/main/java/org/eclipse/tractusx/managedidentitywallets/service/WalletService.java +++ b/src/main/java/org/eclipse/tractusx/managedidentitywallets/service/WalletService.java @@ -61,6 +61,7 @@ import org.springframework.transaction.annotation.Transactional; import java.io.StringWriter; +import java.net.URI; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -221,6 +222,16 @@ private Wallet createWallet(CreateWalletRequest request, boolean authority) { didDocumentBuilder.id(did.toUri()); didDocumentBuilder.verificationMethods(List.of(jwkVerificationMethod)); DidDocument didDocument = didDocumentBuilder.build(); + //modify context URLs + List context = didDocument.getContext(); + List mutableContext = new ArrayList<>(); + mutableContext.addAll(context); + miwSettings.didDocumentContextUrls().forEach(uri -> { + if (!mutableContext.contains(uri)) { + mutableContext.add(uri); + } + }); + didDocument.put("@context", mutableContext); didDocument = DidDocument.fromJson(didDocument.toJson()); log.debug("did document created for bpn ->{}", request.getBpn()); diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 830837092..15bd84c9b 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -81,6 +81,7 @@ miw: supportedFrameworkVCTypes: ${SUPPORTED_FRAMEWORK_VC_TYPES:PcfCredential, SustainabilityCredential, QualityCredential, TraceabilityCredential, BehaviorTwinCredential, ResiliencyCredential} enforceHttps: ${ENFORCE_HTTPS_IN_DID_RESOLUTION:true} contractTemplatesUrl: ${CONTRACT_TEMPLATES_URL:https://public.catena-x.org/contracts/} + didDocumentContextUrls: ${DID_DOCUMENT_CONTEXT_URL:https://www.w3.org/ns/did/v1,https://w3c.github.io/vc-jws-2020/contexts/v1} security: enabled: true realm: ${KEYCLOAK_REALM:miw_test} diff --git a/src/test/java/org/eclipse/tractusx/managedidentitywallets/wallet/WalletTest.java b/src/test/java/org/eclipse/tractusx/managedidentitywallets/wallet/WalletTest.java index 83806e8ec..1b69f336f 100644 --- a/src/test/java/org/eclipse/tractusx/managedidentitywallets/wallet/WalletTest.java +++ b/src/test/java/org/eclipse/tractusx/managedidentitywallets/wallet/WalletTest.java @@ -53,6 +53,7 @@ import org.springframework.http.*; import org.springframework.test.context.ContextConfiguration; +import java.net.URI; import java.util.*; @@ -131,6 +132,10 @@ void createWalletTest201() throws JsonProcessingException, JSONException { Assertions.assertNotNull(response.getBody()); Assertions.assertNotNull(wallet.getDidDocument()); + List context = wallet.getDidDocument().getContext(); + miwSettings.didDocumentContextUrls().forEach(uri -> { + Assertions.assertTrue(context.contains(uri)); + }); Assertions.assertEquals(wallet.getBpn(), bpn); Assertions.assertEquals(wallet.getName(), name); @@ -139,7 +144,6 @@ void createWalletTest201() throws JsonProcessingException, JSONException { Assertions.assertEquals(walletFromDB.getName(), name); Assertions.assertNotNull(walletFromDB); WalletKey walletKey = walletKeyRepository.getByWalletId(walletFromDB.getId()); - Assertions.assertNotNull(wallet.getDidDocument()); Assertions.assertNotNull(walletKey); Assertions.assertEquals(walletFromDB.getBpn(), bpn);