Skip to main content
View as Markdown

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 }

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