Qubiclo is designed for healthcare data. Every layer — authentication, authorisation, transport, storage, and audit — built to meet global healthcare data protection standards.
RS256 JWT Tokens
Access tokens are signed with RS256 (asymmetric). Tokens carry tenant_id, user_id, session_id, and role claims.
Short-Lived Access Tokens
Access tokens expire after 15 minutes (900s). Refresh tokens are stored hashed (SHA-256) in the database and rotated on each refresh.
HttpOnly Refresh Cookie
Refresh tokens are delivered as HttpOnly, Secure, SameSite=Strict cookies — inaccessible to JavaScript.
Session Tracking
Every login creates a session record with IP address and user-agent. Sessions can be individually revoked.
| Role | Permissions |
|---|---|
| operator | tenant:configureusers:manageproviders:writerulebooks:writeaudit:read |
| adjudicator | claims:readclaims:writeworkflow:managefraud:readproviders:read |
| reviewer | claims:readworkflow:managefraud:read |
| api_client | claims:writeclaims:readuploads:writefraud:read |
TLS 1.3 only
All traffic enforced over TLS 1.3. HTTP requests are rejected with 301 redirect to HTTPS.
CORS restriction
CORS policy restricts allowed origins to tenant-configured domains only.
Rate limiting
Per-IP and per-tenant rate limits applied at the API gateway layer.
Webhook HMAC signatures
All outgoing webhooks are signed with HMAC-SHA256 using a tenant-specific secret key.
Protected Health Information (PHI) is scrubbed from logs and audit trails before persistence. The PHI scrubber redacts names, dates of birth, phone numbers, email addresses, and other identifiable fields so audit logs are compliance-safe.
# Fields scrubbed before audit logging
PHI_FIELDS = [
"patient_name", "dob", "phone_number", "email",
"address", "national_id", "insurance_id"
]
# Audit log entry (PHI redacted)
{
"action": "claim.submit",
"resource_id": "clm-uuid-here",
"actor_user_id": "usr-uuid",
"outcome": "success",
"payload": { "patient_name": "[REDACTED]", ... }
}Every state-changing API call writes an immutable audit event in the same database transaction. Audit records include the actor, action, resource, outcome, and timestamp. Records cannot be deleted via the API — only read.
Immutability guarantee
There is no DELETE or UPDATE endpoint for audit records. The only way to clear audit history is a database-level operation requiring direct DB access.