SENAITE API access needs role-scoped credentials and HTTPS

SENAITE is an open-source laboratory information management system. It stores samples, results, workflow states, and user roles. Its JSON API can read and create records and drive laboratory workflows. That makes an API credential more than a reporting key: it can be a path into the evidence and release process of a lab.

The SENAITE API documentation says every site ships with a REST API and that the API uses the same users and permissions as the web interface. Requests can use HTTP Basic authentication or a session cookie. The examples in the public documentation use a local admin:admin account for a test site, but the same page advises HTTPS and a dedicated API user for anything that is not a local test.

Counts provide a starting point

A count-only ZoomEye probe on 2026-11-16 used sub_type=all, page 1, and pagesize 1. The results were:

Query role Exact query Count
Application app="SENAITE" 0
Title title="SENAITE" 485
Body http.body="SENAITE" 685

Title and body matches are strong enough to justify a deployment inventory, but they do not show whether an API endpoint is reachable or whether a test default remains in use. The application fingerprint returned no rows in this observation.

Scope the API identity

Create a dedicated API user for each integration. Give it only the roles required to read or create the records in its workflow. A dashboard that reads results should not be able to verify them or change a sample state. A partner integration should not reuse a laboratory manager's account.

Check permissions in the web interface and the API together. A role change may affect both, but a proxy, cached session, or custom add-on can create a separate path. Test with the API user after a role change and after the user is disabled. Verify that session cookies are invalidated when the account is disabled.

Use HTTPS for every non-local request and do not put the Authorization header in URL logs. If the service is behind a reverse proxy, preserve the original scheme and client identity in a way the application trusts. A proxy header supplied directly by a client should not be able to impersonate an authenticated user.

Review the recent security surface

The SENAITE community disclosed a June 2026 security fix for CVE-2026-54569. The advisory says an API endpoint allowed anonymous account and role enumeration before the fix. A deployment review should confirm that the installed release contains the fix and that an unauthenticated request to the affected path now returns a denial. Do not assume that a generic login page proves every API route is protected.

Back up the API configuration and role mappings, but protect the backup as sensitive data. Review integrations that still use the development default account, static passwords, or shared credentials. Rotate a credential when an integration is retired or an analyst leaves.

Monitor API authentication failures, role changes, sample state changes, and unusual result exports. A lab system's audit trail should identify the API user and the affected record without logging the password or the full patient-related payload.

SENAITE API exposure is a workflow-authority problem. The useful control is a scoped identity, verified endpoint protection, and an audit record that connects the API action to a lab process.

References