Skip to main content
View as Markdown

Stratégies d'authentification

auth.strategies est un tableau obligatoire et non vide déclarant comment les utilisateurs s'authentifient. Chaque entrée est une union discriminée indexée par type. Au moins une stratégie est requise, et deux entrées ne peuvent jamais partager le même type.

auth:
  strategies:
    - type: emailAndPassword
    - type: oauth
      providers: [google, github]
type Description
emailAndPassword Inscription et connexion traditionnelles par identifiants.
magicLink Connexion sans mot de passe via un lien e-mail à usage unique.
oauth Connexion sociale avec des fournisseurs d'identité externes (Google, GitHub, …).

E-mail & mot de passe

La stratégie la plus courante. Les identifiants sont validés côté serveur et une session est émise en cas de succès.

auth:
  strategies:
    - type: emailAndPassword
      minPasswordLength: 12
      maxPasswordLength: 128
      requireEmailVerification: true
      autoSignIn: true
Propriété Description
minPasswordLength Longueur minimale du mot de passe, 6–128. Par défaut 8.
maxPasswordLength Longueur maximale du mot de passe, 8–256. Par défaut 128.
requireEmailVerification Booléen. Lorsque true, les utilisateurs doivent vérifier leur e-mail avant de se connecter. Par défaut false.
autoSignIn Booléen. Lorsque true, les utilisateurs sont connectés automatiquement après l'inscription. Par défaut true.

Lorsque requireEmailVerification: true, un e-mail de vérification est envoyé à l'inscription à l'aide du modèle verification (voir Modèles d'e-mail).

Lien magique

Authentification sans mot de passe. L'utilisateur saisit son e-mail, reçoit un lien à usage unique, et se connecte en cliquant dessus. Nécessite la configuration de SMTP (voir Variables d'environnement).

auth:
  strategies:
    - type: magicLink
      expirationMinutes: 30
Propriété Description
expirationMinutes Durée de vie du lien en minutes (entier positif). Par défaut 15.

Le corps du lien est rendu à partir du modèle d'e-mail magicLink lorsqu'il est fourni.

OTP par e-mail

L'OTP par e-mail délivre un code numérique à usage unique par e-mail au lieu d'un lien. Ce n'est pas une entrée de stratégie — il s'active lorsque vous définissez le modèle d'e-mail emailOtp :

auth:
  strategies:
    - type: emailAndPassword
  emailTemplates:
    emailOtp:
      subject: Your sign-in code
      text: 'Your verification code is $code. It expires shortly.'

La présence de emailTemplates.emailOtp monte le plugin d'OTP par e-mail. La variable $code est remplacée par le code à usage unique généré.

Fournisseurs sociaux / OAuth

Connexion fédérée via des fournisseurs d'identité externes. Les identifiants ne sont jamais dans le schéma — ils sont chargés depuis les variables d'environnement.

auth:
  strategies:
    - type: oauth
      providers: [google, github, microsoft, slack, gitlab]
Propriété Description
providers Tableau non vide d'identifiants de fournisseurs. Identifiants chargés depuis les variables d'environnement.

Fournisseurs pris en charge :

Fournisseur Cas d'usage
google Intégration Google Workspace.
github Authentification des développeurs.
microsoft Entreprise / Azure AD.
slack Communication d'espace de travail.
gitlab Intégration développeur / CI-CD.

Chaque fournisseur activé nécessite une paire d'identifiants dans l'environnement :

GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret
GITHUB_CLIENT_ID=your-client-id
GITHUB_CLIENT_SECRET=your-client-secret

La forme générale est {PROVIDER}_CLIENT_ID et {PROVIDER}_CLIENT_SECRET. Les URL de rappel sont dérivées de BASE_URL. Voir Variables d'environnement.

Contrôle de l'inscription

auth.allowSignUp détermine si le public peut créer ses propres comptes.

auth:
  allowSignUp: false
  strategies:
    - type: emailAndPassword
Valeur Comportement
true (par défaut) Quiconque peut s'auto-inscrire via les stratégies activées.
false L'auto-inscription est désactivée. Seuls les administrateurs créent des utilisateurs via POST /api/auth/admin/create-user ou des invitations.

Lorsque l'auto-inscription est désactivée, les administrateurs intègrent les utilisateurs avec des jetons d'invitation à usage unique :

auth:
  allowSignUp: false
  strategies:
    - type: emailAndPassword
  invitationTokenExpiry: 7d
Propriété Description
invitationTokenExpiry Durée de vie des jetons issus de POST /api/auth/admin/invite-user. Chaîne de durée (72h, 7d) ou millisecondes. Par défaut 72h.

Modèles d'e-mail

auth.emailTemplates personnalise l'objet et le corps des e-mails d'authentification. Chaque modèle est optionnel — Better Auth fournit des valeurs par défaut judicieuses. Définir le modèle emailOtp active en outre le flux d'OTP par e-mail.

auth:
  strategies:
    - type: emailAndPassword
    - type: magicLink
  emailTemplates:
    verification:
      subject: Verify your email for MyApp
      text: 'Hi $name, confirm your email: $url'
    resetPassword:
      subject: Reset your password
      text: 'Reset your password: $url'
      html: '<p>Click <a href="$url">here</a> to reset your password.</p>'
    magicLink:
      subject: Your sign-in link
      text: 'Sign in to MyApp: $url'
Modèle Quand il est envoyé
verification Vérification de l'e-mail après l'inscription.
resetPassword Demande de réinitialisation du mot de passe.
magicLink Connexion par lien magique.
emailOtp Code e-mail à usage unique (sa présence active l'OTP par e-mail).
twoFactorBackupCodes Envoi des codes de secours à deux facteurs.
welcome E-mail de bienvenue après la vérification.
accountDeletion Confirmation de suppression de compte.
invitation Invitation émise par un administrateur (intégration sans mot de passe).

Chaque modèle accepte un subject obligatoire et des corps text et/ou html optionnels. Les corps prennent en charge la substitution $variable :

Variable Signification
$url Lien d'action (vérifier, réinitialiser, lien magique, accepter une invitation).
$name Nom du destinataire.
$email Adresse e-mail du destinataire.
$code Code à usage unique (OTP par e-mail).
$organizationName Nom de l'organisation (invitations).
$inviterName Nom de l'administrateur qui a envoyé l'invitation (invitations administrateur uniquement).

Pages associées