Produit

Authentification unique (SSO) illimitée. Même facture. Même code.

Pointez le client better-auth standard vers une instance. Ajouter le fournisseur d'identité d'un client potentiel est un changement de configuration, pas un bon de commande. Les utilisateurs, les sessions et les secrets résident dans votre Postgres. Pourquoi nous fixons les prix ainsi est une note datée.

Ce qui est réaliséJetons d'agentLa connexion de votre applicationVotre instanceVotre PostgresLes vérifications datéesAnnexe

signet.toml
[server]
listen   = "0.0.0.0:3000"
base_url = "https://auth.example.com"

[database]
adapter = "postgres"   # or SIGNET_DATABASE_URL
# users, sessions + secrets live in YOUR Postgres
Les trois résident dans le même Postgres, et les trois sont désactivés de la même façon.
Qui se connecteCe qu'ils détiennentComment ils arriventComment révoquer leur accès
Personnesune sessioncourriel, clé d'accès, SSOrevoke
Servicesun jetoncréé une seule foisrevoke
Agentsun jeton à portée limitéeauthentification MCPrevoke

Ce qui est réalisé.

Ce que le moteur fait aujourd'hui, une ligne par capacité, chacune avec sa preuve. La règle de ce tableau : réalisé et testé signifie inscrit; partiel ou non démontré signifie explicitement limité ou absent. Rien n'y dépasse les éléments consignés, et le /docs intégré de toute instance en service est la référence à laquelle il doit correspondre.

CapacitéÉtatPreuve
Courriel + mot de passeréaliséInscription et connexion par le protocole certifié, avec politique de mot de passe, vérification des mots de passe compromis et parcours de réinitialisation.
Liens magiquesréaliséEnvoi et vérification. Une connexion effectuée dans un vrai navigateur.
Code à usage unique par courrielréaliséCodes à usage unique pour la connexion, la vérification du courriel, la réinitialisation du mot de passe et le changement de courriel.
Clés d'accès (WebAuthn)réaliséCryptographie réelle du protocole sur quatre routes, testée avec un authentificateur logiciel.
Deux facteursréaliséTOTP, code à usage unique envoyé par courriel comme second facteur et codes de secours à usage unique; le parcours de récupération après perte de l'authentificateur est testé de bout en bout dans un navigateur.
Connexion par réseaux sociauxréaliséConnexion, association et dissociation de fournisseurs en amont par le même protocole.
Organisations + invitationsréaliséDouze routes d'organisation : membres, invitations, rôles.
Clés APIréaliséCinq routes pour émettre et gérer les identifiants programmatiques.
Flux par code d'appareilréaliséCinq routes : connectez une CLI ou un téléviseur depuis un autre appareil.
Authentification MCPréaliséCinq routes d'authentification destinées aux agents; l'appelant machine est un client à part entière.
Jetons d'agent (liés au destinataire)réaliséUn jeton d'accès dont la durée de vie va de cinq minutes à une heure selon une seule clé de configuration, qui nomme jusqu'à huit API auxquelles il peut être présenté, ne porte que les portées approuvées par la personne connectée et est reconnu comme révoqué à chaque point d'accès dès sa révocation. Les interfaces OAuth et MCP lisent la même clé et la même liaison : elles ne peuvent donc pas diverger. Ce que cela apporte →
Inventaire des sessions et des jetonsréaliséÉnumérez et révoquez les sessions et jetons en cours depuis la console et par le protocole.
Fournisseur OAuth2 / OIDCréaliséSignet émet des jetons en tant que fournisseur : code d'autorisation avec PKCE, renouvellement avec détection de réutilisation et identifiants client, ainsi que découverte, JWKS, userinfo, introspection, révocation et enregistrement dynamique des clients. Il signe les jetons d'identité en EdDSA ou en RS256, selon le choix du client. Signet vérifie d'autres algorithmes provenant de fournisseurs d'identité externes; cette vérification est distincte de la signature. Cela ne constitue pas une conformité complète à OIDC Core.
SSO d'entreprise (SAML + OIDC)périmètre limitéLe transport OIDC a été testé avec un environnement Microsoft Entra en service : connexion réelle, MFA, échange de jetons lié au locataire et création de l'organisation au rappel. SAML effectue des allers-retours complets avec un fournisseur d'identité servant aux tests de conformité au protocole, mais n'a pas encore été testé avec un fournisseur commercial : la ligne reste donc limitée au transport qui l'a été.
Agents gérés par l'entreprisepérimètre limitéLe moteur accepte une décision d'autorisation signée par le fournisseur d'identité qu'utilise déjà votre client, puis crée un jeton correspondant, sans faire circuler de secret par locataire par courriel. Réalisé selon le profil finalisé et testé avec un fournisseur d'identité signataire que nous exploitons nous-mêmes; aucune capture d'un locataire commercial en service n'est encore consignée, et cette ligne ne le revendique donc pas. Comment c'est vérifié →
Approvisionnement SCIMpérimètre limitéSignet prend en charge l'approvisionnement et le retrait des utilisateurs par SCIM avec Microsoft Entra. Lorsqu'un utilisateur est retiré, son appartenance à l'organisation est supprimée et ses sessions actives ainsi que ses jetons OAuth sont révoqués; la personne perd l'accès à l'organisation, et le compte lui-même subsiste, par conception. Les groupes font l'objet d'un refus typé et aucun autre fournisseur d'identité n'a été testé, donc ni l'un ni l'autre n'est revendiqué.
Webhooks d'événementsréaliséÉvénements signés avec nouvelles tentatives durables. Chaque instance sert le contrat du récepteur à /docs/event-webhooks avec des vecteurs de test épinglés, et signet events verify-receiver exécute neuf cas de conformité contre votre propre point de terminaison. Un récepteur a été construit à partir de la page servie seule, sans accès au code source.
Règles de connexion + attributs de jetonsréaliséFiltrez une inscription ou une connexion et façonnez les attributs des jetons depuis signet.toml, sans recompilation : règles sur le courriel et le domaine, méthode d'authentification, fournisseur, client OAuth; attributs par client; champs utilisateur typés. Un refus se lit exactement comme un mauvais mot de passe, de sorte qu'une règle ne peut jamais servir à repérer des comptes.
Stockage : PostgreSQL + SQLite chiffréréaliséPostgreSQL est le palier certifié. Un fichier SQLite chiffré par instance (SQLCipher) est un palier pris en charge, avec changement de clé hors ligne et sauvegarde par point de contrôle, et il peut migrer vers Postgres. SQLite n'est pas certifié, pas hautement disponible, et un seul processus par fichier.

Ce qui est absent de ce tableau est absent du produit aujourd'hui. S'il manque une capacité dont vous avez besoin, demandez-nous. La réponse pourrait être une date.

Donnez à un agent un jeton qui expire en quelques minutes.

Votre agent se connecte en tant que personne qui l'utilise. Le jeton qu'il reçoit nomme l'API à laquelle il peut être remis. Sa durée de vie est courte. Il cesse de fonctionner quand vous le révoquez. Et chaque point d'accès donne la même réponse à son sujet.

Votre agent se connecte au nom de la personne qui l'utilise et reçoit un jeton désignant une API, valide quelques minutes.
des minutes, pas une heureUne clé de configuration fixe la durée de vie d'un jeton d'accès, de cinq minutes à une heure. Les points d'accès OAuth et MCP lisent cette même clé : ils ne peuvent donc pas diverger.une clé
destiné à une APIL'agent nomme les API qu'il appellera lorsqu'il demande le jeton, jusqu'à huit. Demandez "ce jeton est-il valide pour mon API?" à propos d'un jeton lié ailleurs, et le point d'accès répond non plutôt que oui. Les points d'accès aux sessions MCP lisent la même liaison : la limite tient donc aux points d'accès que l'agent utilise lui-même.lié
seulement ce que la personne a approuvéLe jeton porte les portées acceptées par la personne connectée, et jamais plus que celles pour lesquelles le client s'est enregistré.intersection
révoquer signifie supprimerUn appel invalide le jeton d'accès MCP d'un agent, pas seulement un jeton OAuth ordinaire. Auparavant, cet appel répondait 200 sans rien modifier.invalidé
une réponse à chaque point d'accèsIntrospection, userinfo et revoke lisent tous la même famille d'identifiants. Un jeton d'agent actif est reconnu comme actif par chacun, et comme invalidé par chacun une fois que vous l'invalidez.une vérité
Un jeton qui ne nomme aucune API reste sans restriction. Nous le disons clairement, car un client qui n'a jamais demandé de liaison ne voit aucun changement.
Dans chaque version. Aucun ajout. Rien de ce qui précède n'exige un indicateur de fonctionnalité, un forfait supérieur ou un poste de facturation d'entreprise. C'est ainsi que le moteur crée les jetons.

Quand la décision vient du propre fournisseur d'identité de votre client plutôt que de votre application, c'est le parcours géré par l'entreprise →

Pointez un client better-auth vers l'instance.

De votre côté, l'intégration est une URL de base. Le client reste le paquet better-auth standard que vous utilisez déjà : il pointe vers votre instance Signet au lieu de votre fournisseur actuel, et les appels que vous avez écrits continuent de fonctionner. Cela vaut pour une instance que nous hébergeons comme pour une instance sur vos propres serveurs sous licence d'entreprise : les requêtes de votre application restent les mêmes, même quand le moteur change d'adresse.

auth-client.ts
import { createAuthClient } from "better-auth/client";

// Votre client better-auth actuel : pointez baseURL
// vers votre instance Signet. Le protocole est le contrat.
export const authClient = createAuthClient({
  baseURL: "https://auth.example.com/api/auth",
});

// Les mêmes appels que vous écrivez déjà. Ils fonctionnent.
await authClient.signIn.email({ email, password });
  • L'instance se vérifie avant de servir. Sa configuration est validée sans aucun réseau, puis validée de nouveau avec l'URL en service; les deux vérifications sont dans le moteur, sans outil externe à installer ni auquel faire confiance.
  • Aucun secret ne réside dans le fichier de configuration. Le secret de signature et l'URL de la base de données sont fournis séparément au processus, et le schéma s'applique au premier démarrage.
  • Vous pointez votre client better-auth vers /api/auth. C'est tout le changement de votre côté : une URL. Elle se lit de la même façon en hébergement ou sur vos propres serveurs.

Vous utilisez un cadriciel? Le guide de démarrage propose cinq parcours concrets : Next.js, React Router v7, Node/Express, Vue 3 et Svelte, ainsi que les bases pour React et le client standard.

Ce que sert une instance Signet.

Les routes auxquelles une instance en service répond. Ouvrez pour lire la liste.

/api/auth/*Le protocole d'authentification certifié (inscription, connexion, session, OAuth, OIDC), compatible avec le client better-auth standard, ainsi que des métadonnées utilisateur JSONB aux limites d'accès publiques, privées et contrôlées par le navigateur. Conformité différentielle 280 / 280 avec un écart de 0; séparément, acceptation de bout en bout 14 / 14.certifié
/Page d'accueil : l'attestation de certification présentée en tête de page, puis une présentation du produit, de sa raison d'être et de l'intégration en trois étapes.servi
/adminTableau de bord d'exploitation (protégé par une clé d'administration) : utilisateurs, révocation de sessions et bannissement, événements et export d'audit, reprise des envois en échec. Sans JavaScript, rendu côté serveur, protégé contre le CSRF.à vous
/docsGuide de démarrage intégré, référence de configuration générée et documentation d'exploitation du cycle de vie (mise à niveau, sauvegarde, restauration, export). Aucune requête externe; le tout est intégré au moteur.intégré
/certificationL'attestation de compatibilité (HTML et JSON, rendus à partir d'une source unique pour éviter les divergences) : conformité 280 / 280, acceptation de bout en bout 14 / 14, écart 0, identité de la version, et état honnête des limites d'exploitation et du soutien.vérifiable
/llms.txt
/llms-full.txt
Guides concis et détaillés pour les agents d'IA. Une instance dérive l'inventaire de ses points de terminaison activés de la même source qu'OpenAPI; le complément du site de présentation reste limité aux indications sur le produit et l'intégration.machine

La documentation n'est pas un site distinct : chaque instance déployée sert ses propres /docs, /llms.txt et /llms-full.txt dérivé de l'inventaire depuis le moteur, pour que sa référence des routes reste liée à la version que vous exécutez.

Annexe

Chaque point de terminaison, par domaine.

La référence API, condensée en preuves du produit. Chaque ligne renvoie au README.md du dépôt ou au /docs intégré que sert une instance en cours d'exécution. Si elle n'y figure pas, elle n'est pas sur cette page. Ouvrez pour lire les lignes.

DomaineCe qui est retournéCe que vous obtenez
Inscriptionsign-up auto_sign_inCréation de compte par le protocole certifié. Activez auto_sign_in et un nouvel utilisateur est connecté immédiatement après l'inscription, sans connexion séparée.
Connexionsign-in/emailConnexion par courriel. La documentation intégrée utilise ce chemin comme exemple de limitation du débit par chemin.
Sessionssession expires_in fresh_ageLa durée de vie est de sept jours par défaut (expires_in) et se renouvelle à l'utilisation (update_age); une fenêtre configurable fresh_age contrôle les actions sensibles.
OAuth + OIDCsocial_providers pkceConnexion par réseaux sociaux sur le même protocole certifié : google et github ont des valeurs par défaut intégrées, les fournisseurs personnalisés déclarent leurs points de terminaison, PKCE est disponible. Un module oauth_proxy facultatif est livré.
Politique de mot de passepassword8–128 caractères par défaut; évaluation facultative de la robustesse du mot de passe et facteur de coût de hachage réglable.
Vérifications préalables en CLIinit doctor env pullLa même version crée une configuration sans secrets sans écraser les fichiers, valide la configuration ou une instance en service et écrit l'URL publique du client sans extraire les secrets du serveur.
Vérification des mots de passe compromishaveibeenpwnedVérification facultative par plage avec Have I Been Pwned. Pointez le point de terminaison de plage vers un miroir autohébergé.
Envoi de vérification et de réinitialisationdelivery smtp.templates dead_letterLes codes de vérification et les liens de réinitialisation sont envoyés par webhook JSON signé (signature HMAC), par SMTP, ou pas du tout. Les objets et les corps en texte brut SMTP sont configurables par flux avec des espaces réservés stricts; les envois en échec peuvent être conservés pour une reprise depuis l'interface d'administration.
Limitation du débitrate_limitActivée par défaut : 100 requêtes par fenêtre de 10 secondes, avec des règles de remplacement par chemin.
État de santé et schéma machine/health open-api/generate-schemaConfirmez l'état de santé à /health; consultez le schéma machine du protocole à /api/auth/open-api/generate-schema.

Sources : README.md (tableau des interfaces, guide de démarrage) et /docs intégré : lisez la copie d'une instance en service, servie depuis le moteur.

Votre Postgres. La même version, où qu'elle s'exécute.

Chaque utilisateur, session et secret réside dans votre propre PostgreSQL, derrière une API /admin que vous contrôlez. Signet est la même version, que nous l'exécutions ou que vous le fassiez : commencez sur une instance gérée et, le jour où il le faut, transférez-la sur votre propre matériel sous licence d'entreprise, sans changer une ligne de code client. Le protocole ne change pas.

Instance hébergée, puis vos propres serveurs sous licence d'entreprise, puis environnement scellé ou isolé : votre PostgreSQL à chaque étape, et une sortie indiquant partir sans nous. HÉBERGÉ instance gérée · commencez ici le protocole ne change pas VOS SERVEURS même version · licence d'entreprise vos données ont toujours été à vous SCELLÉ / ISOLÉ nul besoin d'Internet public partez sans nous pg_dump · pg_restore · démarrage · aucune coopération requise
La même version à chaque étape. Vos utilisateurs, sessions et secrets dans votre propre PostgreSQL tout au long du parcours.

Partir se fait avec pg_dump, pg_restore, puis un démarrage. Sur votre propre matériel, vous le faites vous-même et partir ne demande l'aide de personne. Avec le service hébergé, nous exploitons la base : vous demandez et nous vous remettons le fichier d'export. Une licence d'entreprise met le moteur entre vos mains : si nous disparaissions demain, votre authentification continuerait de fonctionner et les requêtes ne changeraient jamais.

La propriété s'étend aussi à la configuration : chaque paramètre réside dans signet.toml, dans votre propre dépôt, pas dans une console hébergée. La configuration est le tableau de bord →

Ce que couvrent les vérifications datées, et ce qu'elles ne couvrent pas.

La série de tests de conformité différentielle est de 280 / 280 : chaque vérification du profil public de compatibilité s'exécute sur l'implémentation de référence et sur Signet, puis les résultats sont comparés. Le profil ne compte que les vérifications que l'implémentation de référence réussit elle-même; Signet n'est pas évalué sur celles auxquelles la référence échoue. L'écart de compatibilité (une vérification que la référence réussit et à laquelle Signet échoue) est de 0.

Périmètre. Le profil de compatibilité est un ensemble public de vérifications rejouables; les mêmes vérifications s'exécutent sur l'implémentation de référence better-auth et sur Signet, et l'écart est le nombre de vérifications que la référence réussit et auxquelles Signet échoue. Un écart de 0 signifie que, pour chaque vérification du profil, un client ne peut pas distinguer les deux. Cela ne signifie pas que toutes les routes de better-auth sont implémentées : le profil se limite à ce que ces vérifications exercent, et tout ce qu'elles n'exercent pas en est exclu. Posez-nous une question sur une route précise et nous vous dirons clairement si elle fait partie du profil.

Séparément, l'acceptation de bout en bout est de 14 / 14 : le client non modifié de better-auth exécute de vrais parcours d'inscription, de session, d'organisation et de deux facteurs. Les deux exécutions ont été consignées le 2026-07-22. L'attestation de compatibilité est une référence datée à ces exécutions, pas une attestation cryptographique sous-entendue, et chaque instance sert sa propre copie pour que vous puissiez la vérifier vous-même.

PropriétéValeur
Profil de compatibilitébetter-auth 1.6.23
Version du profilSignet compatibility profile v1
Conformité différentielle280 / 280
Écart de compatibilité0
Acceptation de bout en bout14 / 14
Consigné le2026-07-22
Limites d'exploitationNon publiées. Le nombre maximal d'utilisateurs, le débit soutenu de requêtes et les ressources utilisées sous charge n'ont pas été mesurés; aucun chiffre de capacité n'est donc revendiqué. Des limites mesurées seront ajoutées une fois consignées.
État du soutien. Documentation en libre-service, soutien par courriel avec le forfait Team, soutien prioritaire avec Business. Écrivez à support@signetauth.com : vous recevez un numéro de référence et votre demande entre dans une file plutôt que dans la boîte de courriel d'une seule personne. Tout objectif de réponse est inscrit dans un contrat; en dehors d'un contrat, aucun SLA n'est offert ni sous-entendu.

L'inscription crée l'instance automatiquement. Le processus se termine par une attestation : une vérification /health en service, plus un test sommaire de bout en bout d'inscription, de connexion et de récupération de session sur l'URL en service. Démontré à partir de zéro le 2026-07-21 : health 200, test sommaire 3/3.

Commencez sur nos serveurs. Passez aux vôtres.

Il n'y a ni version d'essai ni édition réduite. L'instance hébergée est la même version certifiée qu'exécute le titulaire d'une licence d'entreprise.