Retour au tableau de bord

Documentation

Apprenez à utiliser Asyntai

Access Tags

Restreignez des éléments de connaissances aux visiteurs autorisés — appliqué sur nos serveurs, pas par l'IA

Aller à Access Tags
Entreprise

Aperçu

Tout le contenu n'est pas destiné à tout le monde : documents réservés aux membres, matériel propre à une région, ressources d'un niveau payant. Access Tags permet à un seul chatbot de servir différents publics en toute sécurité. Vous posez un tag sur un élément de connaissances et, dès cet instant, l'élément est invisible pour chaque visiteur — sauf ceux dont la page présente ce tag, signé par votre propre serveur. La restriction est appliquée dans notre requête de récupération, avant même que le modèle d'IA n'intervienne. Un visiteur sans le tag ne peut pas extraire le contenu par des questions habiles, car pour lui il n'a jamais été récupéré.

Comment ça marche

  1. Vous taggez des éléments de connaissances - sur la page Access Tags ou directement via l'API ; les éléments sans tag continuent de fonctionner pour tout le monde
  2. Votre serveur signe les tags de chaque visiteur - quand un membre connecté charge votre page, votre back-end détermine ses droits et les signe avec une clé secrète que vous seul détenez
  3. Le widget envoie l'attestation signée - elle accompagne chaque message du chat ; le navigateur ne fait que la transporter et ne peut pas la modifier sans casser la signature
  4. Nous vérifions et filtrons - une signature valide débloque les éléments aux tags correspondants ; une attestation absente, altérée ou expirée signifie que le visiteur n'obtient que le contenu public

Configuration

Activez la fonctionnalité sur la page Access Tags de votre tableau de bord — une clé de signature est générée pour vous. Conservez-la uniquement sur votre serveur ; quiconque la détient peut créer des attestations valides.

Taggez votre contenu soit sur cette même page, soit en envoyant les éléments via l'API :

POST /api/v1/knowledge/text/
{
  "title": "Members-only price list",
  "content": "...",
  "website_id": "123",
  "access_tags": ["premium"]
}

Faites ensuite imprimer par votre serveur l'attestation signée à côté du snippet du widget. Le message à signer est la liste de tags séparés par des virgules, jointe par une barre verticale à l'heure d'expiration si vous en utilisez une :

<?php
$tags    = "members,premium";          // this visitor's entitlements
$expires = time() + 3600;              // unix seconds, optional but recommended
$sig     = hash_hmac("sha256", $tags . "|" . $expires, $SECRET);
?>
<script>
window.Asyntai = window.Asyntai || {};
window.Asyntai.accessTags = "<?php echo $tags; ?>";
window.Asyntai.accessTagsExpires = "<?php echo $expires; ?>";
window.Asyntai.accessTagsSignature = "<?php echo $sig; ?>";
</script>

La même signature en Node.js et en Python :

// Node.js
const crypto = require("crypto");
const sig = crypto.createHmac("sha256", SECRET)
                  .update(tags + "|" + expires).digest("hex");

# Python
import hmac, hashlib
sig = hmac.new(SECRET.encode(), f"{tags}|{expires}".encode(),
               hashlib.sha256).hexdigest()

Sans expiration, signez simplement la chaîne de tags seule. Avec une expiration, une attestation cesse de fonctionner dès qu'elle est dépassée — utile quand des droits peuvent être révoqués, puisque le visiteur doit recharger une page que vous contrôlez pour obtenir une attestation fraîche.

Logique des tags

Les tags d'un élément se combinent en ET : l'élément n'est récupérable que si chaque tag qu'il porte figure dans l'attestation du visiteur. L'attestation d'un visiteur peut porter autant de droits que vous le souhaitez, et la correspondance se fait sur tous à la fois.

Tags de l'élément Attestation du visiteur Résultat
(none)peu importeVisible — les éléments sans tag sont publics
northnorth, premiumVisible
north, premiumnorthMasqué — il manque premium dans l'attestation
north, premiumnorth, premium, extraVisible — des droits supplémentaires ne gênent pas

Le ET est délibéré. Avec une correspondance « au moins un », ajouter un second tag à un élément élargirait qui peut le voir : restreindre un document à deux groupes le publierait en fait intégralement auprès des deux. Avec une correspondance « tous », chaque tag ajouté ne peut que restreindre davantage, si bien qu'une erreur penche du côté sûr.

Exprimer « l'un ou l'autre »

Omettez la dimension sur l'élément. Si l'attestation de chaque visiteur porte sa région, un document sans tag de région est disponible pour toutes les régions, tandis que ses autres tags continuent de s'appliquer. Un élément taggé uniquement premium signifie donc « toute région, abonnés premium seulement ».

Pour un véritable choix entre dimensions — par exemple nord-avec-basique ou sud-avec-premium, et rien d'autre — ajoutez l'élément deux fois avec une combinaison chacun, ou donnez aux deux publics un tag commun que votre serveur inclut dans leurs attestations.

Limites

  • Jusqu'à 20 tags par élément de connaissances
  • Jusqu'à 50 tags dans l'attestation d'un même visiteur
  • 50 caractères par tag ; les virgules et les barres verticales sont interdites, car l'attestation est une chaîne séparée par des virgules

Modifier les tags plus tard

Les tags peuvent être remplacés sur un élément existant sans le renvoyer. Le changement s'applique dès la question suivante — le contenu lui-même n'est pas retraité.

POST /api/v1/knowledge/<id>/tags/
{
  "access_tags": ["premium"]
}

Envoyez une liste vide pour rendre un élément public à nouveau. Vous pouvez aussi modifier les tags à la main sur la page Access Tags de votre tableau de bord.

Ce qui est garanti

  • Application côté serveur - le filtre s'exécute dans notre requête de base de données lors de la récupération ; les éléments taggés sont absents du contexte de l'IA pour les visiteurs non autorisés, il n'y a donc rien à faire fuiter
  • Fail-closed partout - pas de signature, signature erronée, attestation expirée, fonctionnalité désactivée, offre rétrogradée : dans chacun de ces cas, le visiteur n'obtient que le contenu public, jamais davantage
  • Le navigateur ne peut pas falsifier l'accès - modifier les tags dans les outils de développement casse la signature ; seul votre serveur détient la clé
  • Votre logique de droits reste la vôtre - nous ne savons jamais comment vous décidez qui reçoit quel tag ; nous vérifions seulement que votre serveur l'a affirmé

Bon à savoir

  • Access Tags est de l'autorisation, User Context de la personnalisation - utilisez User Context pour renseigner l'IA sur le membre ; utilisez Access Tags pour contrôler les connaissances que l'IA peut mobiliser
  • Le contenu exploré du site est toujours public - il provient de votre site public, il n'y a donc rien à restreindre ; les tags s'appliquent aux éléments texte, fichiers et API
  • Les tags d'un élément se combinent en ET - voir Logique des tags ci-dessus ; chaque tag de l'élément doit être présent dans l'attestation du visiteur
  • Régénérer la clé invalide toutes les anciennes attestations - faites-le si la clé a pu fuiter, puis mettez vos pages à jour pour signer avec la nouvelle
  • Les noms de tags sont à votre discrétion - jusqu'à 20 par élément, 50 caractères chacun, sans virgules ni barres verticales ; ils n'apparaissent jamais dans le chat visible des visiteurs

Se marie avec User Context : une fonctionnalité contrôle quelles connaissances l'IA peut utiliser pour ce visiteur, l'autre dit à l'IA qui est le visiteur.

Contexte utilisateur Transmettez les données des utilisateurs connectés à votre chatbot IA pour des conversations personnalisées

Note : Access Tags fait partie d'un accord Enterprise. Écrivez à [email protected] et nous vous guiderons.