From a8ef4a2badf61d64cfd61014f379897c29579473 Mon Sep 17 00:00:00 2001 From: nzambello Date: Mon, 4 Aug 2025 10:53:07 +0200 Subject: [PATCH] add auth --- README.md | 11 ++++++----- client.ts | 9 +++++++-- docker-compose.yml | 5 ++++- index.ts | 6 +++++- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 331af86..ec0285b 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ A simple NATS client/server setup for testing message publishing and subscribing ### 1. Start the NATS server and message subscriber ```bash -docker compose up nats server +docker compose up --build nats server ``` This starts: @@ -29,7 +29,7 @@ This starts: ### 2. Run the interactive client ```bash -docker compose run --rm client +docker compose run --rm --build client ``` This opens an interactive prompt where you can: @@ -57,13 +57,13 @@ docker compose down 1. **Terminal 1**: Start the infrastructure ```bash - docker compose up nats server -d + docker compose up --build nats server ``` 2. **Terminal 2**: Run the client ```bash - docker compose run --rm client + docker compose run --rm --build client ``` You'll see: @@ -94,7 +94,7 @@ bun install ### Start NATS server ```bash -docker run -p 4222:4222 nats:latest +docker run -p 4222:4222 -ti nats:latest --auth s3cr3t ``` ### Run the server (in one terminal) @@ -112,6 +112,7 @@ bun run client.ts ## Environment Variables - `NATS_SERVER`: NATS server URL (default: `nats://localhost:4222`) +- `NATS_AUTH_TOKEN`: NATS server [auth token](https://docs.nats.io/running-a-nats-service/configuration/securing_nats/auth_intro/tokens) ## Troubleshooting diff --git a/client.ts b/client.ts index f473104..0e8a15e 100644 --- a/client.ts +++ b/client.ts @@ -2,9 +2,14 @@ import { connect } from "nats"; import readline from "readline"; const NATS_SERVER = process.env.NATS_SERVER || "nats://localhost:4222"; +const NATS_AUTH_TOKEN = process.env.NATS_AUTH_TOKEN || "s3cr3t"; -const nc = await connect({ servers: NATS_SERVER }); -console.log(`Connected to NATS at ${NATS_SERVER}`); +console.log( + `Connecting to NATS at ${NATS_SERVER} with token ${NATS_AUTH_TOKEN}` +); + +const nc = await connect({ servers: NATS_SERVER, token: NATS_AUTH_TOKEN }); +console.log(`Connected to NATS`); const rl = readline.createInterface({ input: process.stdin, diff --git a/docker-compose.yml b/docker-compose.yml index 063cac1..e1960c4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,9 @@ services: nats: - # docker run -p 4222:4222 -ti nats:latest + # docker run -p 4222:4222 -ti nats:latest --auth s3cr3t image: nats:latest container_name: nats + command: "--auth s3cr3t" ports: - 4222:4222 @@ -15,6 +16,7 @@ services: - nats environment: - NATS_SERVER=nats://nats:4222 + - NATS_AUTH_TOKEN=s3cr3t client: build: @@ -27,3 +29,4 @@ services: - nats environment: - NATS_SERVER=nats://nats:4222 + - NATS_AUTH_TOKEN=s3cr3t diff --git a/index.ts b/index.ts index 35171bb..80f14eb 100644 --- a/index.ts +++ b/index.ts @@ -1,9 +1,13 @@ import { connect } from "nats"; const NATS_SERVER = process.env.NATS_SERVER || "nats://localhost:4222"; +const NATS_AUTH_TOKEN = process.env.NATS_AUTH_TOKEN || "s3cr3t"; -const nc = await connect({ servers: NATS_SERVER }); +console.log( + `Connecting to NATS at ${NATS_SERVER} with token ${NATS_AUTH_TOKEN}` +); +const nc = await connect({ servers: NATS_SERVER, token: NATS_AUTH_TOKEN }); console.log("Connected to NATS"); const sub = nc.subscribe("test");