diff --git a/apps/connection-manager/src/application.ts b/apps/connection-manager/src/application.ts
index 575ee560eaa36da9d160ea0c6223546714e8131f..4faf826b7d000af01757bd7f0905aa827ec2b888 100644
--- a/apps/connection-manager/src/application.ts
+++ b/apps/connection-manager/src/application.ts
@@ -1,4 +1,5 @@
 import type { ConfigType } from '@nestjs/config';
+import type { ClientProvider } from '@nestjs/microservices';
 
 import { Module } from '@nestjs/common';
 import { ConfigModule } from '@nestjs/config';
@@ -34,12 +35,21 @@ import { InvitationsModule } from './invitations/invitations.module.js';
         {
           name: NATS_CLIENT,
           inject: [natsConfig.KEY],
-          useFactory: (config: ConfigType<typeof natsConfig>) => ({
-            transport: Transport.NATS,
-            options: {
-              url: config.url as string,
-            },
-          }),
+          useFactory: (config: ConfigType<typeof natsConfig>) => {
+            const provider: Required<ClientProvider> = {
+              transport: Transport.NATS,
+              options: {
+                servers: config.url as string,
+              },
+            };
+
+            if ('user' in config && 'password' in config) {
+              provider.options.user = config.user as string;
+              provider.options.pass = config.password as string;
+            }
+
+            return provider;
+          },
         },
       ],
     }),
diff --git a/apps/connection-manager/src/config/http.config.ts b/apps/connection-manager/src/config/http.config.ts
index 906f6c8d0652bdc74d737b6adef02b4d8f333c1b..fc63fd9ddbe4bfb6b1d8225d636d3dee1f284502 100644
--- a/apps/connection-manager/src/config/http.config.ts
+++ b/apps/connection-manager/src/config/http.config.ts
@@ -1,6 +1,6 @@
 import { registerAs } from '@nestjs/config';
 
 export const httpConfig = registerAs('http', () => ({
-  host: process.env.HTTP_HOST,
-  port: Number(process.env.HTTP_PORT),
+  host: process.env.HOST || '0.0.0.0',
+  port: Number(process.env.PORT) || 3000,
 }));
diff --git a/apps/connection-manager/src/config/nats.config.ts b/apps/connection-manager/src/config/nats.config.ts
index 023e92372adf6be27904aeccd041d125fbb804b9..194053c2e2e44070e34b8547b4a15819d02d9b75 100644
--- a/apps/connection-manager/src/config/nats.config.ts
+++ b/apps/connection-manager/src/config/nats.config.ts
@@ -1,6 +1,8 @@
 import { registerAs } from '@nestjs/config';
 
 export const natsConfig = registerAs('nats', () => ({
-  url: process.env.NATS_URL,
-  monitoringUrl: process.env.NATS_MONITORING_URL,
+  url: process.env.NATS_URL || 'nats://localhost:4222',
+  user: process.env.NATS_USER,
+  password: process.env.NATS_PASSWORD,
+  monitoringUrl: process.env.NATS_MONITORING_URL || 'http://localhost:8222',
 }));
diff --git a/apps/connection-manager/src/config/ssi.config.ts b/apps/connection-manager/src/config/ssi.config.ts
index 1779919f156e28d94440919221b2c95acda26a10..408bf279a73c30ed0ff8a277630ea4f7b8882eb8 100644
--- a/apps/connection-manager/src/config/ssi.config.ts
+++ b/apps/connection-manager/src/config/ssi.config.ts
@@ -1,5 +1,5 @@
 import { registerAs } from '@nestjs/config';
 
 export const ssiConfig = registerAs('ssi', () => ({
-  agentUrl: process.env.SSI_AGENT_URL,
+  agentUrl: process.env.SSI_AGENT_URL || 'http://localhost:3010',
 }));
diff --git a/apps/connection-manager/src/config/validation.ts b/apps/connection-manager/src/config/validation.ts
index a7fe2f83c768b702b76f629b790507af6344ff7c..8431e101ec082c9bdc9b183e2f6d39aaef38ffaa 100644
--- a/apps/connection-manager/src/config/validation.ts
+++ b/apps/connection-manager/src/config/validation.ts
@@ -1,11 +1,13 @@
 import Joi from 'joi';
 
 export const validationSchema = Joi.object({
-  HTTP_HOST: Joi.string().default('0.0.0.0'),
-  HTTP_PORT: Joi.number().default(3000),
+  HTTP_HOST: Joi.string(),
+  HTTP_PORT: Joi.number(),
 
-  NATS_URL: Joi.string().uri().default('nats://localhost:4222'),
-  NATS_MONITORING_URL: Joi.string().uri().default('http://localhost:8222'),
+  NATS_URL: Joi.string().uri(),
+  NATS_USER: Joi.string().optional(),
+  NATS_PASSWORD: Joi.string().optional(),
+  NATS_MONITORING_URL: Joi.string().uri(),
 
-  SSI_AGENT_URL: Joi.string().default('http://localhost:3010'),
+  SSI_AGENT_URL: Joi.string(),
 });
diff --git a/apps/connection-manager/src/main.ts b/apps/connection-manager/src/main.ts
index 0490cd5aea0c873d02557512dec0a7022426aa87..24529e4abd0e91dc32fac0f80836a4d3d98834a9 100644
--- a/apps/connection-manager/src/main.ts
+++ b/apps/connection-manager/src/main.ts
@@ -1,5 +1,6 @@
 /* c8 ignore start */
-import type { MicroserviceOptions } from '@nestjs/microservices';
+import type { ConfigType } from '@nestjs/config';
+import type { MicroserviceOptions, NatsOptions } from '@nestjs/microservices';
 
 import { VersioningType } from '@nestjs/common';
 import { ConfigService } from '@nestjs/config';
@@ -8,17 +9,29 @@ import { Transport } from '@nestjs/microservices';
 import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
 
 import { Application } from './application.js';
+import { natsConfig } from './config/nats.config.js';
 
 const app = await NestFactory.create(Application);
 const configService = app.get(ConfigService);
 app.enableCors();
 
-app.connectMicroservice<MicroserviceOptions>({
+const { url, user, password } = app.get(natsConfig.KEY) as ConfigType<
+  typeof natsConfig
+>;
+
+const microserviceOptions: Required<NatsOptions> = {
   transport: Transport.NATS,
   options: {
-    servers: [configService.get('nats').url],
+    servers: [url],
   },
-});
+};
+
+if (user && password) {
+  microserviceOptions.options.user = user;
+  microserviceOptions.options.pass = password;
+}
+
+app.connectMicroservice<MicroserviceOptions>(microserviceOptions);
 
 app.enableVersioning({
   defaultVersion: ['1'],