Salta ai contenuti

Autenticazione

Ogni chiamata /osl/* porta un token JWT Bearer. Il motore autorizza in base agli scope e ai ruoli del token, e il punto di applicazione delle policy applica l’ACL del chiamante server-side.

Authorization: Bearer <jwt>

Il JWT porta:

Claim Significato
chain[] La catena di delega, radice → foglia (il soggetto agente è l’ultimo anello)
sub Opzionale; se presente, deve essere uguale a chain[-1]
roles[] Ruoli assegnati
tenant La cella del tenant
scopes[] osl:read, osl:write, osl:execute, osl:admin
exp Scadenza (obbligatoria)

L’accesso viene valutato su una catena di soggetti (radice → foglia), non su una singola identità — vedi Accesso e capacità. La catena è dentro il payload firmato (HS256), così un chiamante non può accorciarla o falsificarla senza rompere la firma:

{
"iss": "opendome",
"chain": ["ana@company.com", "agent://copilot-finance"],
"roles": ["analyst"],
"iat": 1750000000,
"exp": 1750000300
}
Edizione Emettitore
OSS standalone Apache-2.0 La cella conia i token HS256 localmente. Il chart di tenant-semantic-api genera un Secret di firma; usa scripts/osl-token.sh <tenant> --roles <r> per coniarne uno. Il motore standalone non si fida dell’header X-Actor-Roles — un chiamante da un Ingress pubblico non può falsificare i ruoli.
Enterprise / gestito Enterprise Il control-plane emette e ruota i JWT. Puoi anche anteporre al motore il tuo proxy con consapevolezza dell’IdP che imposta X-Actor-Roles e attivare auth.trustActorRolesHeader=true (BYO-OIDC).

Valori di default, per soggetto:

Endpoint Limite
POST /osl/query 60 rps
POST /osl/sample 30 rps
GET /osl/schema 5 rps (cacheato)

Superato → 429 Too Many Requests con Retry-After. I limiti si configurano per tenant nel tier gestito.

Ogni richiesta — 200 o no — produce una voce di audit immutabile e concatenata tramite hash con request_id, soggetto, azione, gli FQN degli oggetti toccati, la decisione e un timestamp.