Connexions
Les connexions stockent les informations d'identification de services externes une seule fois dans le tableau de premier niveau app.connections[], puis les référencent depuis les actions HTTP et IA via $connection.NAME. Sovrium attache la bonne authentification à chaque requête et — pour OAuth2 — rafraîchit les jetons automatiquement.
connections:
- name: crm-oauth
label: Acme CRM
type: oauth2
props:
provider: google
clientId: $env.GOOGLE_CLIENT_ID
clientSecret: $env.GOOGLE_CLIENT_SECRET
scopes: [openid, email, profile]
Chaque connexion partage trois champs de base et un objet props typé :
| Propriété | Description |
|---|---|
name |
Identifiant en kebab-case (^[a-z][a-z0-9-]*$, max 100). Référencé comme $connection.NAME. Requis. |
label |
Libellé lisible. |
description |
À quoi sert la connexion. |
type |
oauth2 / apiKey / basic / bearer. Requis. Détermine la forme de props. |
props |
Configuration d'identification spécifique au type (ci-dessous). Les valeurs secrètes devraient utiliser $env.VAR. |
Les noms de connexion doivent être uniques dans toute l'application.
OAuth2
OAuth2 complet avec les grants authorization-code ou client-credentials, PKCE, rafraîchissement de jeton, et jetons par utilisateur vs partagés (application).
Champ props |
Description |
|---|---|
provider |
Raccourci de fournisseur connu (par ex. google, github, slack). Peut inférer les URL d'auth/de jeton. |
clientId |
ID client OAuth2 (prend en charge $env.VAR). Requis. |
clientSecret |
Secret client OAuth2 (prend en charge $env.VAR). Requis. |
authorizationUrl |
Point de terminaison d'autorisation (requis pour les fournisseurs personnalisés). |
tokenUrl |
Point de terminaison de jeton (requis pour les fournisseurs personnalisés). |
scopes |
Tableau de scopes à demander. |
redirectUri |
URI de redirection enregistrée auprès du fournisseur. Requise à l'exécution — la génération automatique n'est pas implémentée. |
grantType |
authorizationCode (par défaut) ou clientCredentials. |
pkce |
Méthode PKCE : S256 (recommandée), plain, ou none (par défaut). |
audience |
Audience d'API / identifiant de ressource (par ex. une URL d'audience Auth0). |
authenticationMethod |
Comment les identifiants client sont envoyés sur les requêtes de jeton : header (HTTP Basic, par défaut RFC 6749) ou body (paramètres de formulaire). Honoré par le grant de rafraîchissement. |
extraAuthParams |
Paramètres supplémentaires ajoutés à l'URL d'autorisation (par ex. access_type: offline, prompt: consent). |
extraTokenParams |
Paramètres supplémentaires ajoutés aux requêtes d'échange de jeton. |
scope |
Portée de la connexion : app (jeton partagé réservé aux administrateurs, par défaut) ou user (jetons par utilisateur). |
- name: hubspot
type: oauth2
props:
clientId: $env.HUBSPOT_CLIENT_ID
clientSecret: $env.HUBSPOT_CLIENT_SECRET
authorizationUrl: 'https://app.hubspot.com/oauth/authorize'
tokenUrl: 'https://api.hubapi.com/oauth/v1/token'
scopes: [crm.objects.contacts.read]
redirectUri: 'https://myapp.example.com/oauth/callback'
pkce: S256
scope: user
extraAuthParams: { access_type: offline, prompt: consent }
Jetons d'application vs par utilisateur. scope: app stocke un jeton partagé unique utilisable par les administrateurs. scope: user émet et stocke des jetons par utilisateur final, de sorte que les actions HTTP/IA de chaque utilisateur agissent en son nom. Les flux client-credentials (machine à machine, sans utilisateur) définissent grantType: clientCredentials. Le rafraîchissement de jeton se produit automatiquement ; la requête de rafraîchissement honore authenticationMethod.
Clé API
Clé API envoyée dans un en-tête configurable, avec un préfixe optionnel.
Champ props |
Description |
|---|---|
key |
Valeur de la clé API (généralement $env.VAR). Requis. |
header |
Nom de l'en-tête pour la clé (par défaut X-API-Key). |
prefix |
Préfixe avant la valeur dans l'en-tête (par ex. Bearer, Token). |
- name: github-api
type: apiKey
props: { key: $env.GITHUB_TOKEN, header: Authorization, prefix: Bearer }
Authentification basic
Authentification HTTP Basic.
Champ props |
Description |
|---|---|
username |
Nom d'utilisateur (prend en charge $env.VAR). Requis. |
password |
Mot de passe (prend en charge $env.VAR). Requis. |
- name: legacy-api
type: basic
props: { username: $env.LEGACY_USER, password: $env.LEGACY_PASS }
Jeton bearer
Un jeton bearer statique envoyé dans l'en-tête Authorization.
Champ props |
Description |
|---|---|
token |
Valeur du jeton bearer (généralement $env.VAR). Requis. |
- name: internal-svc
type: bearer
props: { token: $env.INTERNAL_SERVICE_TOKEN }
Référencer une connexion
Attachez une connexion à une action HTTP ou IA via la prop connection :
- name: fetch
type: http
operator: get
props: { url: 'https://api.example.com/me', connection: github-api }
Pages connexes
- HTTP et webhooks — actions qui consomment les connexions.
- Actions IA — fournisseurs IA authentifiés via des connexions.
- Variables d'environnement — secrets
$envréférencés par les props de connexion. - Vue d'ensemble de l'authentification — authentification de l'utilisateur final (distincte des connexions sortantes).