From 9e15ff4ba8528d3bc71b52f243580dc16e1d0aa8 Mon Sep 17 00:00:00 2001
From: Zdravko Iliev <zdravko.iliev@vereign.com>
Date: Mon, 9 Oct 2023 14:59:11 +0000
Subject: [PATCH] feat: implement basic auth for id union

---
 apps/agent/README.md                          |  2 +-
 .../ci-cd/helm/templates/deployment.yaml      |  8 +++
 apps/agent/deployment/ci-cd/helm/values.yaml  | 50 ++++++++++---------
 libs/config/src/config/ledgers.config.ts      |  2 +
 .../interfaces/ledgers.config.interface.ts    |  2 +
 libs/ledgers/src/idunion/idunion.provider.ts  | 19 +++++--
 6 files changed, 54 insertions(+), 29 deletions(-)

diff --git a/apps/agent/README.md b/apps/agent/README.md
index 63a0c611..4ac3348f 100644
--- a/apps/agent/README.md
+++ b/apps/agent/README.md
@@ -1,4 +1,4 @@
-# OCM ENGINE - AGENT 
+# OCM ENGINE - AGENT
 
 Agent service is a wrapper around @ocm-engine/askar library. 
 
diff --git a/apps/agent/deployment/ci-cd/helm/templates/deployment.yaml b/apps/agent/deployment/ci-cd/helm/templates/deployment.yaml
index b49dfb1c..96dda7af 100644
--- a/apps/agent/deployment/ci-cd/helm/templates/deployment.yaml
+++ b/apps/agent/deployment/ci-cd/helm/templates/deployment.yaml
@@ -41,6 +41,10 @@ spec:
             value: {{ .Values.ocm.agent.ledgers | quote }}
           - name: IDUNION_KEY
             value: {{ .Values.ocm.agent.idunion.key | quote }}
+          - name: IDUNION_BASIC_USER
+            value: {{ .Values.ocm.agent.idunion.user | quote }}
+          - name: IDUNION_BASIC_PASS
+            value: {{ .Values.ocm.agent.idunion.pass | quote }}
           - name : AGENT_PEER_URL
             value: {{ .Values.ocm.agent.peer.url | quote }}
           - name: AGENT_NAME
@@ -86,6 +90,10 @@ spec:
             value: {{ .Values.ocmtest.agent.ledgers | quote }}
           - name: IDUNION_KEY
             value: {{ .Values.ocmtest.agent.idunion.key | quote }}
+          - name: IDUNION_BASIC_USER
+            value: {{ .Values.ocm.agent.idunion.user | quote }}
+          - name: IDUNION_BASIC_PASS
+            value: {{ .Values.ocm.agent.idunion.pass | quote }}
           - name : AGENT_PEER_URL
             value: {{ .Values.ocmtest.agent.peer.url | quote }}
           - name: AGENT_NAME
diff --git a/apps/agent/deployment/ci-cd/helm/values.yaml b/apps/agent/deployment/ci-cd/helm/values.yaml
index 786ae568..e3c21da3 100644
--- a/apps/agent/deployment/ci-cd/helm/values.yaml
+++ b/apps/agent/deployment/ci-cd/helm/values.yaml
@@ -1,8 +1,8 @@
-# -- Default number of instances to start ...
+# -- Default number of instances to start .....
 replicaCount: 1
 # -- Application name ...
 name: agent
-# -- Ovverwrites application name ..
+# -- Ovverwrites application name ...
 nameOverride: ""
 
 image:
@@ -62,12 +62,14 @@ ocm:
     ledgers: "BCOVRIN_TEST"
     idunion:
       key: ""
+      user: ""
+      pass: ""
     peer:
       url: "https://ssi-dev.vereign.com/issuer"
     issuer:
-      name: "AGENT_ISSUER_OCM"
-      key: "CwNJroKHTSSj3XvE7ZAnuKiTn2C1uhuy7234FDCQkFvxEqfm5rzhNri"
-      did: "000000000000003451230000000000TCuste1232289234"
+      name: "AGENT_ISSUER_OCM_BCOVRIN"
+      key: "CwNJroKHTSSj3XvE7ZAnuKiTn2Copxk11uhuy7234FDCQkFvxEqfm5rzhNri"
+      did: "0000000000000034512300000ikajcuak1dpsaSDKJF00000TCuste1232odjxu289234"
     db:
       host: ""
       user: ""
@@ -98,12 +100,14 @@ ocmtest:
     ledgers: "BCOVRIN_TEST"
     idunion:
       key: ""
+      user: ""
+      pass: ""
     peer:
       url: "https://ssi-dev.vereign.com/holder"
     holder:
-      name: "HOLDER_AGENT_OCM"
-      key: "CwNJroKHTSSj3XvE7ZAnuKiTn3C4QkFvxEqfm5rsdNri"
-      did: "2000000000000000CCA120000000TCuste21jsjs"
+      name: "HOLDER_AGENT_OCM_BCOVRIN_TEST"
+      key: "CwNJroKHTSSj3XvE7ZAnuKiTbbscsn3udm1238cklawsliC4QkFvxEqfm5rsdNri"
+      did: "2000000000043431s0000ok1329ck1p12dpp0CCA120000000TCuste21jsjs"
     db:
       host: ""
       user: ""
@@ -115,6 +119,20 @@ ocmtest:
     maxMessage: 10
     rateLimit: 5
 
+  nats:
+    server: "nats.ocm-test:4222"
+    name: "ssi_holder_stream"
+    subjects: "connections.*,proofs.*,credentials.*,credentials.definition.*,credentials.offer.*,schemas.*,messages.*"
+
+  gateway:
+    port:
+      http: 8081
+      tcp: 8881
+    socket:
+      name: "message"
+    messagePattern: "webhook"
+    host: "gateway.ocm-test"
+    
 hin:
   agent:
     ledgers: "BCOVRIN_TEST"
@@ -139,7 +157,7 @@ hin:
           id: "did:indy:bcovrin:test:Qtays75Zq3NbMRMGbw9JKM/anoncreds/v0/CLAIM_DEF/66375/demo-hin-cred-def"
       webhook:
         url: "https://did.svdx.pro/ocm/connection"   
-    max: 
+    max:
       messages: 10
     rete:
       limit: 5
@@ -148,20 +166,6 @@ hin:
       user: ""
       pass: ""     
 
-  nats:
-    server: "nats.ocm-test:4222"
-    name: "ssi_holder_stream"
-    subjects: "connections.*,proofs.*,credentials.*,credentials.definition.*,credentials.offer.*,schemas.*,messages.*"
-
-  gateway:
-    port:
-      http: 8081
-      tcp: 8881
-    socket:
-      name: "message"
-    messagePattern: "webhook"
-    host: "gateway.ocm-test"
-
 service:
   port: 8080
   port1: 8001
diff --git a/libs/config/src/config/ledgers.config.ts b/libs/config/src/config/ledgers.config.ts
index de79f8a9..8d7c3c67 100644
--- a/libs/config/src/config/ledgers.config.ts
+++ b/libs/config/src/config/ledgers.config.ts
@@ -7,5 +7,7 @@ export const ledgersConfig = registerAs(
   (): ILedgers => ({
     ledgers: process.env["LEDGERS"]!.split(","),
     idUnionApiKey: process.env["IDUNION_KEY"]!,
+    idUnionApiBasicUser: process.env["IDUNION_BASIC_USER"]!,
+    idUnionApiBasicPass: process.env["IDUNION_BASIC_PASS"]!,
   }),
 );
diff --git a/libs/config/src/interfaces/ledgers.config.interface.ts b/libs/config/src/interfaces/ledgers.config.interface.ts
index a49c9850..c7af9b9a 100644
--- a/libs/config/src/interfaces/ledgers.config.interface.ts
+++ b/libs/config/src/interfaces/ledgers.config.interface.ts
@@ -1,4 +1,6 @@
 export interface ILedgers {
   ledgers: Array<string>;
   idUnionApiKey: string;
+  idUnionApiBasicUser: string;
+  idUnionApiBasicPass: string;
 }
diff --git a/libs/ledgers/src/idunion/idunion.provider.ts b/libs/ledgers/src/idunion/idunion.provider.ts
index 5c6dcf46..0a5fa67c 100644
--- a/libs/ledgers/src/idunion/idunion.provider.ts
+++ b/libs/ledgers/src/idunion/idunion.provider.ts
@@ -30,11 +30,20 @@ export class IdunionProvider implements IRegistrator {
 
     this.logger.log(`Trying to register ${did} to idunion`);
     try {
-      await axios.post(`${URL}?apiKey=${this.config.idUnionApiKey}`, {
-        role: "ENDORSER",
-        did: unqualifiedIndyDid,
-        verkey,
-      });
+      await axios.post(
+        `${URL}?apiKey=${this.config.idUnionApiKey}`,
+        {
+          role: "ENDORSER",
+          did: unqualifiedIndyDid,
+          verkey,
+        },
+        {
+          auth: {
+            username: this.config.idUnionApiBasicUser,
+            password: this.config.idUnionApiBasicPass,
+          },
+        },
+      );
 
       this.logger.log("Registration successful");
       return did;
-- 
GitLab