Authentification
Chaque appel /osl/* porte un token JWT Bearer. Le moteur autorise selon les
scopes et roles du token, et le point d’application des politiques applique l’ACL
de l’appelant server-side.
Authorization: Bearer <jwt>Le token
Section intitulée « Le token »Le JWT porte :
| Claim | Signification |
|---|---|
chain[] |
La chaîne de délégation, racine → feuille (le sujet agissant est le dernier maillon) |
sub |
Optionnel ; s’il est présent, doit être égal à chain[-1] |
roles[] |
Roles assignés |
tenant |
La cellule du tenant |
scopes[] |
osl:read, osl:write, osl:execute, osl:admin |
exp |
Expiration (requise) |
La chaîne de délégation
Section intitulée « La chaîne de délégation »L’accès est évalué sur une chaîne de sujets (racine → feuille), pas une seule identité — voir Accès et capacités. La chaîne est à l’intérieur du payload signé (HS256), de sorte qu’un appelant ne peut ni la raccourcir ni la falsifier sans casser la signature :
{ "iss": "opendome", "chain": ["ana@company.com", "agent://copilot-finance"], "roles": ["analyst"], "iat": 1750000000, "exp": 1750000300}D’où viennent les tokens
Section intitulée « D’où viennent les tokens »| Édition | Émetteur |
|---|---|
| OSS standalone Apache-2.0 | La cellule génère des tokens HS256 localement. Le chart tenant-semantic-api génère un Secret de signature ; utilisez scripts/osl-token.sh <tenant> --roles <r> pour en générer un. Le moteur standalone ne fait pas confiance à l’en-tête X-Actor-Roles — un appelant venant d’un Ingress public ne peut pas falsifier de roles. |
| Enterprise / managed Enterprise | Le control-plane émet et fait tourner les JWTs. Vous pouvez aussi placer devant le moteur votre propre proxy avec conscience de l’IdP qui pose X-Actor-Roles et activer auth.trustActorRolesHeader=true (BYO-OIDC). |
Rate limits
Section intitulée « Rate limits »Valeurs par défaut, par sujet :
| Endpoint | Limite |
|---|---|
POST /osl/query |
60 rps |
POST /osl/sample |
30 rps |
GET /osl/schema |
5 rps (caché) |
Dépassé → 429 Too Many Requests avec Retry-After. Les limites se configurent
par tenant dans le tier géré.
Chaque requête — 200 ou non — produit une entrée d’audit immuable et chaînée par
hash avec request_id, le sujet, l’action, les FQNs des objets touchés, la
décision et un timestamp.