Managing Clients
Managing

Managing Clients

Create, update, and delete client identities. Set expiration dates for temporary access.

Using an AI assistant? Give it this file.

/llms.md is a single Markdown file covering installation, configuration, quickstart, clients, upstreams, permissions, TLS, and production deployment. Copy it and paste it into your AI chat, or tell the AI to fetch https://drevnix.tech/llms.md.

Managing Clients

A client is an identity that authenticates to the Drevnix proxy endpoint (:8000) using standard Docker HTTP Basic Auth. Clients are completely separate from upstream registry accounts. Revoking a client does not affect upstream credentials, and upstream credentials are never exposed to clients.

Client passwords are hashed with bcrypt immediately on creation and are never stored in plaintext. If a password is lost, delete the client and create a new one.

Creating a client

Via portal: Clients → Add Client

Via API:

curl -X POST http://drevnix.company.com:8002/v1/clients \
  -u admin:password \
  -H "Content-Type: application/json" \
  -d '{
    "id": "ci-pipeline-prod",
    "password": "a-strong-random-password"
  }'

With an expiration date (ISO 8601):

curl -X POST http://drevnix.company.com:8002/v1/clients \
  -u admin:password \
  -H "Content-Type: application/json" \
  -d '{
    "id": "contractor-alice",
    "password": "temp-password",
    "expiration_time": "2025-06-01T00:00:00Z"
  }'

Expiration dates

Clients with an expiration date automatically return 401 Unauthorized once the date passes. No manual cleanup needed. This makes them ideal for:

  • Contractor or third-party access
  • CI pipelines for ephemeral environments
  • Any access that should be time-boxed by policy

Expired clients can be seen in the portal and deleted or their expiry updated.

PatternExample IDNotes
One per CI pipelineci-pipeline-prodScope permissions to only the images that pipeline needs
One per developerdev-aliceRevoke individually if needed
One per microservicesvc-paymentsPull only its own base image
Temporary contractorcontractor-aliceAlways set an expiration date

Listing clients

curl http://drevnix.company.com:8002/v1/clients \
  -u admin:password

Supports limit and offset for pagination.

Updating a client

Update the expiration date:

curl -X PUT http://drevnix.company.com:8002/v1/clients/contractor-alice \
  -u admin:password \
  -H "Content-Type: application/json" \
  -d '{"expiration_time": "2025-12-31T00:00:00Z"}'

Passwords cannot be updated. Delete and recreate the client to change a password.

Deleting a client

Access is revoked immediately:

curl -X DELETE http://drevnix.company.com:8002/v1/clients/contractor-alice \
  -u admin:password

Viewing a client’s permissions

curl "http://drevnix.company.com:8002/v1/permissions?client_id=ci-pipeline-prod" \
  -u admin:password