Autenticació
Cada crida /osl/* porta un token JWT Bearer. El motor autoritza contra els scopes
i rols del token, i el punt d’aplicació de polítiques aplica l’ACL del cridador
server-side.
Authorization: Bearer <jwt>El token
Section titled “El token”El JWT porta:
| Claim | Significat |
|---|---|
chain[] |
La cadena de delegació, root → leaf (el subjecte actuant és l’última baula) |
sub |
Opcional; si hi és, ha de ser igual a chain[-1] |
roles[] |
Rols assignats |
tenant |
La cel·la del tenant |
scopes[] |
osl:read, osl:write, osl:execute, osl:admin |
exp |
Caducitat (obligatòria) |
La cadena de delegació
Section titled “La cadena de delegació”L’accés s’avalua sobre una cadena de subjectes (root → leaf), no una sola identitat — vegeu Accés i capacitats. La cadena és dins del payload signat (HS256), així un cridador no la pot escurçar ni falsejar sense trencar la signatura:
{ "iss": "opendome", "chain": ["ana@company.com", "agent://copilot-finance"], "roles": ["analyst"], "iat": 1750000000, "exp": 1750000300}D’on surten els tokens
Section titled “D’on surten els tokens”| Edició | Emisor |
|---|---|
| OSS standalone Apache-2.0 | La cel·la encunya tokens HS256 localment. El chart tenant-semantic-api genera un Secret de signatura; usa scripts/osl-token.sh <tenant> --roles <r> per encunyar-ne un. El motor standalone no confia en la capçalera X-Actor-Roles — un cridador públic de l’Ingress no pot falsejar rols. |
| Enterprise / gestionat Enterprise | El control-plane emet i rota els JWTs. També pots frontear el motor amb el teu propi proxy IdP-aware que estableix X-Actor-Roles i activar auth.trustActorRolesHeader=true (BYO-OIDC). |
Rate limits
Section titled “Rate limits”Per defecte, per subjecte:
| Endpoint | Límit |
|---|---|
POST /osl/query |
60 rps |
POST /osl/sample |
30 rps |
GET /osl/schema |
5 rps (cachejat) |
Superat → 429 Too Many Requests amb Retry-After. Els límits es configuren per
tenant en el tier gestionat.
Auditoria
Section titled “Auditoria”Cada petició — 200 o no — produeix una entrada d’auditoria immutable i encadenada
amb hash amb request_id, subjecte, acció, els FQNs dels objectes tocats, la
decisió i un timestamp.