Identity and Access Management (IAM) microservice
465
Identity and Access Management (IAM) microservice with JWT-based authentication and RBAC-based user management.
docker pull doccerz/iam-microservice:latest
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
docker-compose up
The app automatically runs migrations and seeds the database on startup. No host-side Node.js required.
| Variable | Required | Description |
|---|---|---|
DATABASE_URL | Yes | Full Postgres connection string |
DATABASE_SCHEMA | Yes | Drizzle schema name (e.g. user-service) |
DATABASE_USER | Yes | Postgres username (used by db service) |
DATABASE_PASSWORD | Yes | Postgres password (used by db service) |
DATABASE_NAME | Yes | Postgres database name (used by db service) |
JWT_ACCESS_SECRET | Yes | Access token signing secret — change in production |
JWT_REFRESH_SECRET | Yes | Refresh token signing secret — change in production |
JWT_ACCESS_EXPIRY | No | Access token TTL (default: 15m) |
JWT_REFRESH_EXPIRY | No | Refresh token TTL (default: 7d) |
PORT | No | HTTP port (default: 3000) |
DEFAULT_ROLE_SLUG | No | Role assigned on public registration (default: user) |
/auth| Method | Path | Auth | Description |
|---|---|---|---|
POST | /auth/register | Public | Register a new user (assigned default role) |
POST | /auth/login | Public | Login, returns access + refresh tokens |
POST | /auth/refresh | Public | Rotate refresh token, issue new pair |
POST | /auth/change-password | Bearer | Change password, revokes all sessions |
POST | /auth/reset-password | Token | Token-based password reset |
/users| Method | Path | Permission | Description |
|---|---|---|---|
POST | /users | user:write | Create user with role assignment |
GET | /users | user:read | List / filter users (paginated) |
PATCH | /users/:id | user:write | Update profile or deactivate |
PUT | /users/:id/roles | role:write | Reassign roles |
/docs| Method | Path | Description |
|---|---|---|
GET | /docs/ | Swagger UI |
GET | /docs/spec | Raw OpenAPI 3.1 YAML |
// Success
{ "success": true, "data": { ... } }
// Error
{ "success": false, "error": "message" }
Content type
Image
Digest
sha256:0a88c1e56…
Size
52.4 MB
Last updated
7 months ago
docker pull doccerz/iam-microservice