Access Tags
Restricționați elementele bazei de cunoștințe la vizitatori autorizați — aplicat pe serverele noastre, nu de către IA
Prezentare generală
Nu tot conținutul este pentru toți: documente doar pentru membri, materiale specifice unei regiuni, resurse ale nivelurilor plătite. Cu Access Tags, un singur chatbot servește în siguranță audiențe diferite. Puneți o etichetă pe un element al bazei de cunoștințe și, din acel moment, elementul este invizibil pentru orice vizitator — cu excepția celor a căror pagină prezintă acea etichetă, semnată de propriul dvs. server. Restricția se aplică în interogarea noastră de căutare, înainte ca modelul de IA să fie măcar implicat. Un vizitator fără etichetă nu poate extrage conținutul prin întrebări iscusite, pentru că pentru el nu a fost niciodată preluat.
Cum funcționează
- Dvs. etichetați elementele bazei de cunoștințe - pe pagina Access Tags sau direct prin API; elementele fără etichete continuă să funcționeze pentru toți
- Serverul dvs. semnează etichetele fiecărui vizitator - când un membru autentificat încarcă pagina dvs., backend-ul îi stabilește drepturile și le semnează cu o cheie secretă pe care doar dvs. o dețineți
- Widgetul trimite dovada semnată - călătorește cu fiecare mesaj din chat; browserul doar o transportă și nu o poate modifica fără a rupe semnătura
- Noi verificăm și filtrăm - o semnătură validă deblochează elementele cu etichete potrivite; o dovadă lipsă, alterată sau expirată înseamnă că vizitatorul primește doar conținut public
Cum se configurează
Activați funcția pe pagina Access Tags din panoul dvs. — o cheie de semnare se generează automat. Păstrați-o doar pe serverul dvs.; oricine o are poate crea dovezi valide.
Etichetați conținutul pe aceeași pagină sau la trimiterea elementelor prin API:
POST /api/v1/knowledge/text/
{
"title": "Members-only price list",
"content": "...",
"website_id": "123",
"access_tags": ["premium"]
}
Apoi puneți serverul să afișeze dovada semnată lângă snippetul widgetului. Mesajul de semnat este lista de etichete separate prin virgule, unită printr-o bară verticală cu ora expirării, când folosiți una:
<?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>
Aceeași semnătură în Node.js și 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()
Fără expirare, semnați doar șirul de etichete în sine. Cu expirare, o dovadă încetează să funcționeze în momentul depășirii — util când drepturile pot fi revocate, deoarece vizitatorul trebuie să reîncarce o pagină controlată de dvs. pentru a primi o dovadă proaspătă.
Logica etichetelor
Etichetele unui element se combină cu ȘI: elementul este preluat doar când fiecare etichetă de pe el apare în dovada vizitatorului. Dovada unui vizitator poate purta oricâte drepturi, iar potrivirea se face pe toate deodată.
| Etichetele elementului | Dovada vizitatorului | Rezultat |
|---|---|---|
(none) | orice | Vizibil — elementele fără etichete sunt publice |
north | north, premium | Vizibil |
north, premium | north | Ascuns — din dovadă lipsește premium |
north, premium | north, premium, extra | Vizibil — drepturile în plus nu deranjează |
ȘI este intenționat. Cu potrivirea „cel puțin una”, adăugarea unei a doua etichete pe un element ar lărgi cine îl poate vedea, așa că restrângerea unui document la două grupuri l-ar publica de fapt integral pentru ambele. Cu potrivirea „toate”, fiecare etichetă adăugată poate doar să restrângă mai mult, deci o greșeală cade în partea sigură.
Exprimarea lui „oricare dintre”
Omiteți acea dimensiune de pe element. Dacă dovada fiecărui vizitator poartă regiunea sa, un document fără etichetă de regiune este disponibil tuturor regiunilor, în timp ce celelalte etichete ale sale rămân valabile. Un element etichetat doar cu premium înseamnă deci „orice regiune, doar abonați premium”.
Pentru o alegere reală între dimensiuni — de exemplu nord-cu-bază sau sud-cu-premium și nimic altceva — adăugați elementul de două ori, cu câte o combinație, sau dați ambelor audiențe o etichetă comună pe care serverul dvs. o include în dovezile lor.
Limite
- Până la 20 de etichete per element de cunoștințe
- Până la 50 de etichete în dovada unui singur vizitator
- 50 de caractere per etichetă; virgulele și barele verticale nu sunt permise, deoarece dovada este un șir separat prin virgule
Modificarea etichetelor ulterior
Etichetele pot fi înlocuite pe un element existent fără a-l încărca din nou. Modificarea se aplică de la următoarea întrebare — conținutul în sine nu este reprocesat.
POST /api/v1/knowledge/<id>/tags/
{
"access_tags": ["premium"]
}
Trimiteți o listă goală pentru a face elementul public din nou. Puteți edita etichetele și manual, pe pagina Access Tags din panoul dvs.
Ce este garantat
- Aplicare pe partea de server - filtrul rulează în interogarea noastră către baza de date la căutare; pentru vizitatorii neautorizați, elementele etichetate lipsesc din contextul IA, deci nu are ce să scurgă
- Fail-closed peste tot - fără semnătură, semnătură greșită, dovadă expirată, funcție oprită, plan retrogradat: în fiecare dintre aceste cazuri vizitatorul primește doar conținut public, niciodată mai mult
- Browserul nu poate falsifica accesul - editarea etichetelor în instrumentele de dezvoltare rupe semnătura; doar serverul dvs. deține cheia
- Logica dvs. de drepturi rămâne a dvs. - nu aflăm niciodată cum decideți cine primește ce etichetă; verificăm doar că serverul dvs. a confirmat-o
Bine de știut
- Access Tags este autorizare, User Context este personalizare - folosiți User Context pentru a-i spune IA despre membru; folosiți Access Tags pentru a controla din ce cunoștințe poate IA să se inspire
- Conținutul accesat al site-ului este întotdeauna public - provine de pe site-ul dvs. public, deci nu are ce restricționa; etichetele se aplică elementelor text, fișiere și API
- Etichetele unui element se combină cu ȘI - vedeți Logica etichetelor mai sus; fiecare etichetă a elementului trebuie să fie prezentă în dovada vizitatorului
- Regenerarea cheii invalidează toate dovezile vechi - faceți-o dacă cheia ar fi putut scăpa, apoi actualizați paginile să semneze cu cea nouă
- Numele etichetelor le alegeți dvs. - până la 20 per element, câte 50 de caractere, fără virgule sau bare verticale; nu apar niciodată în chatul văzut de vizitatori
Se completează cu User Context: o funcție controlează ce cunoștințe poate folosi IA pentru acest vizitator, cealaltă îi spune IA cine este vizitatorul.
Contextul utilizatorului Transmite datele utilizatorului autentificat către chatbot-ul tău AI pentru conversații personalizateNotă: Access Tags face parte dintr-un acord Enterprise. Scrieți la [email protected] și vă explicăm totul.