InventarioITU does not manage its own user database. Instead, every login attempt is validated against the institutional directory — either OpenLDAP or a compatible Active Directory server — through theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/carlamndz/InventarioITU/llms.txt
Use this file to discover all available pages before exploring further.
ldap-service container running on port 389. This design means user accounts, password policies, and group memberships are controlled centrally by ITU Mendoza’s existing IT infrastructure, and the inventory system automatically inherits those controls. The Node.js/Express backend on inventario-web acts as the LDAP client: it receives the submitted credentials, performs an LDAP bind, and grants or denies a session based on the directory’s response.
How Authentication Works
User submits the login form
The user opens
inventario-web in a browser (port 3000) and enters their ITU username and password. The form POSTs the credentials to the Express login endpoint.Express initiates an LDAP bind
The backend first performs an administrative bind using the service account credentials (
LDAP_BIND_DN / LDAP_BIND_PASSWORD) to search the directory for the user’s distinguished name (DN). It then attempts a second bind with the user’s own DN and the submitted password.OpenLDAP validates the credentials
The
ldap-service container (port 389) receives the bind request and checks the provided DN and password against its directory database. It returns either a success response or an invalidCredentials error.Session is created or the user is redirected
On a successful bind, the Express backend creates a server-side session, stores the user’s DN and group membership, and redirects to the inventory dashboard. On failure, the user is redirected back to the login page with an error message — no session is written and no internal details are exposed to the browser.
Authentication Flow Diagram
The credential path from browser to directory involves three hops:| Layer | Service | Port | Action |
|---|---|---|---|
| Client | Browser | — | Submits username + password via POST |
| Frontend | inventario-web | 3000 | Receives credentials; issues LDAP bind request |
| Directory client | ldap-service | 389 | Validates bind against OpenLDAP directory |
| Directory store | OpenLDAP / AD | — | Returns success or invalidCredentials |
User Roles
InventarioITU recognises two roles, mapped from LDAP group membership at login time:Admin
Members of the
inventario-admins LDAP group. Can create, edit, and delete equipment records in both the relational database and MongoDB, manage user assignments, and access all reports.Viewer
All other authenticated users. Can browse the full equipment inventory, search by lab or equipment ID, and view hardware component details — but cannot modify any records.
LDAP Connection Configuration
The Express backend reads all LDAP connection parameters from environment variables. No connection string or credential should ever appear in source code or in a committed configuration file.| Variable | Example value | Purpose |
|---|---|---|
LDAP_URL | ldap://ldap-service:389 | Full URL of the LDAP server, including scheme and port |
LDAP_BASE_DN | dc=itu,dc=edu,dc=ar | Base distinguished name under which all user entries are searched |
LDAP_BIND_DN | cn=inventario-svc,ou=services,dc=itu,dc=edu,dc=ar | DN of the service account used for the initial directory search |
LDAP_BIND_PASSWORD | (secret) | Password for the LDAP_BIND_DN service account |
Secret object referenced in the inventario-web Pod spec. A minimal environment block looks like:
For instructions on deploying and configuring the
ldap-service container itself — including how to seed the initial directory, configure TLS, and set up replication — see the full setup guide at /operations/ldap-configuration.