Sign inSign up

doccerz/iam-microservice

By doccerz

•Updated 7 months ago

Identity and Access Management (IAM) microservice

Image
0

465

doccerz/iam-microservice repository overview

⁠IAM Microservice

Identity and Access Management (IAM) microservice with JWT-based authentication and RBAC-based user management.

⁠Tech Stack

  • Runtime: Node.js 20 + TypeScript
  • Framework: Express.js 5
  • Database: PostgreSQL 16 with Drizzle ORM
  • Auth: JWT (access + refresh tokens), Argon2id password hashing
  • Validation: Zod

⁠Quick Start

⁠1. Pull the image
docker pull doccerz/iam-microservice:latest
⁠2. Copy and configure the compose file
curl -O https://raw.githubusercontent.com/doccerz/user-microservice-js/main/docker-compose.yml.example
mv docker-compose.yml.example docker-compose.yml

Create a .env file:

DATABASE_USER=user
DATABASE_PASSWORD=password
DATABASE_NAME=iam_db
DATABASE_URL=postgresql://user:password@db:5432/iam_db
DATABASE_SCHEMA=user-service
JWT_ACCESS_SECRET=change-me-access
JWT_REFRESH_SECRET=change-me-refresh
JWT_ACCESS_EXPIRY=15m
JWT_REFRESH_EXPIRY=7d
⁠3. Start
docker-compose up

The app automatically runs migrations and seeds the database on startup. No host-side Node.js required.

⁠Environment Variables

VariableRequiredDescription
DATABASE_URLYesFull Postgres connection string
DATABASE_SCHEMAYesDrizzle schema name (e.g. user-service)
DATABASE_USERYesPostgres username (used by db service)
DATABASE_PASSWORDYesPostgres password (used by db service)
DATABASE_NAMEYesPostgres database name (used by db service)
JWT_ACCESS_SECRETYesAccess token signing secret — change in production
JWT_REFRESH_SECRETYesRefresh token signing secret — change in production
JWT_ACCESS_EXPIRYNoAccess token TTL (default: 15m)
JWT_REFRESH_EXPIRYNoRefresh token TTL (default: 7d)
PORTNoHTTP port (default: 3000)
DEFAULT_ROLE_SLUGNoRole assigned on public registration (default: user)

⁠API Reference

⁠Auth — /auth
MethodPathAuthDescription
POST/auth/registerPublicRegister a new user (assigned default role)
POST/auth/loginPublicLogin, returns access + refresh tokens
POST/auth/refreshPublicRotate refresh token, issue new pair
POST/auth/change-passwordBearerChange password, revokes all sessions
POST/auth/reset-passwordTokenToken-based password reset
⁠Users — /users
MethodPathPermissionDescription
POST/usersuser:writeCreate user with role assignment
GET/usersuser:readList / filter users (paginated)
PATCH/users/:iduser:writeUpdate profile or deactivate
PUT/users/:id/rolesrole:writeReassign roles
⁠Docs — /docs
MethodPathDescription
GET/docs/Swagger UI
GET/docs/specRaw OpenAPI 3.1 YAML
⁠Response Format
// Success
{ "success": true, "data": { ... } }

// Error
{ "success": false, "error": "message" }

⁠Source

github.com/doccerz/iam-microservice⁠

Tag summary

Content type

Image

Digest

sha256:0a88c1e56…

Size

52.4 MB

Last updated

7 months ago

docker pull doccerz/iam-microservice