Access Tags
Begrens kunnskapselementer til autoriserte besøkende — håndhevet på våre servere, ikke av KI-en
Oversikt
Ikke alt innhold er for alle: dokumenter kun for medlemmer, regionsspesifikt materiale, ressurser for betalte nivåer. Med Access Tags betjener én chatbot ulike målgrupper trygt. Du setter en tagg på et kunnskapselement, og fra det øyeblikket er elementet usynlig for enhver besøkende — unntatt dem hvis side legger frem den taggen, signert av din egen server. Begrensningen håndheves i vår hentespørring, før KI-modellen i det hele tatt er involvert. En besøkende uten taggen kan ikke trekke ut innholdet med lure spørsmål, for for dem ble det aldri hentet.
Slik fungerer det
- Du tagger kunnskapselementer - på Access Tags-siden eller direkte via API-et; elementer uten tagger fungerer fortsatt for alle
- Serveren din signerer hver besøkendes tagger - når et innlogget medlem laster siden din, avgjør backenden din rettighetene deres og signerer dem med en hemmelig nøkkel bare du har
- Widgeten sender det signerte beviset - det følger med hver chatmelding; nettleseren frakter det bare og kan ikke endre det uten å bryte signaturen
- Vi verifiserer og filtrerer - en gyldig signatur låser opp elementer med samsvarende tagger; et manglende, manipulert eller utløpt bevis betyr at den besøkende bare får offentlig innhold
Slik setter du det opp
Slå på funksjonen på Access Tags-siden i dashbordet — en signeringsnøkkel genereres automatisk. Oppbevar den kun på serveren din; alle som har den, kan lage gyldige bevis.
Tagg innholdet enten på samme side eller når du sender elementer via API-et:
POST /api/v1/knowledge/text/
{
"title": "Members-only price list",
"content": "...",
"website_id": "123",
"access_tags": ["premium"]
}
La deretter serveren din skrive ut det signerte beviset ved siden av widget-snippeten. Meldingen som signeres er den kommaseparerte tagglisten, koblet med en loddrett strek til utløpstiden når du bruker en:
<?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>
Samme signatur i Node.js og 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()
Uten utløp signerer du bare taggstrengen alene. Med utløp slutter et bevis å virke i det øyeblikket det passeres — nyttig når rettigheter kan trekkes tilbake, siden den besøkende må laste inn en side du kontrollerer på nytt for å få et ferskt bevis.
Tagglogikk
Taggene på et element kombineres med OG: elementet kan bare hentes når hver tagg på det finnes i den besøkendes bevis. Beviset til en besøkende kan bære så mange rettigheter du vil, og det matches mot alle samtidig.
| Elementets tagger | Den besøkendes bevis | Resultat |
|---|---|---|
(none) | hva som helst | Synlig — elementer uten tagger er offentlige |
north | north, premium | Synlig |
north, premium | north | Skjult — premium mangler i beviset |
north, premium | north, premium, extra | Synlig — ekstra rettigheter gjør ingen skade |
OG er med vilje. Med matching på «minst én» ville en ekstra tagg på et element utvide hvem som får se det, så å snevre inn et dokument til to grupper ville i praksis publisere det i sin helhet til begge. Med matching på «alle» kan hver tagg du legger til bare begrense ytterligere, slik at en feil faller mot den trygge siden.
Slik uttrykker du «en av»
Utelat dimensjonen på elementet. Hvis hver besøkendes bevis bærer regionen deres, er et dokument uten regiontagg tilgjengelig for alle regioner, mens de øvrige taggene fortsatt gjelder. Et element som bare er tagget premium, betyr altså «enhver region, kun premium-abonnenter».
For et ekte valg mellom dimensjoner — si nord-med-basis eller sør-med-premium og ingenting annet — legg til elementet to ganger med én kombinasjon hver, eller gi begge målgruppene en felles tagg som serveren din inkluderer i bevisene deres.
Grenser
- Opptil 20 tagger per kunnskapselement
- Opptil 50 tagger i beviset til én besøkende
- 50 tegn per tagg; komma og loddrette streker er ikke tillatt, siden beviset er en kommaseparert streng
Endre tagger senere
Tagger kan erstattes på et eksisterende element uten å laste det opp på nytt. Endringen gjelder fra neste spørsmål — selve innholdet behandles ikke på nytt.
POST /api/v1/knowledge/<id>/tags/
{
"access_tags": ["premium"]
}
Send en tom liste for å gjøre et element offentlig igjen. Du kan også redigere tagger for hånd på Access Tags-siden i dashbordet.
Hva som garanteres
- Håndheving på serversiden - filteret kjører inne i databasespørringen vår ved henting; for uautoriserte besøkende er taggede elementer fraværende fra KI-ens kontekst, så det finnes ingenting å lekke
- Fail-closed overalt - ingen signatur, feil signatur, utløpt bevis, avslått funksjon, nedgradert plan: i hvert av disse tilfellene får den besøkende bare offentlig innhold, aldri mer
- Nettleseren kan ikke forfalske tilgang - å redigere taggene i utviklerverktøyene bryter signaturen; bare serveren din har nøkkelen
- Rettighetslogikken din forblir din - vi får aldri vite hvordan du avgjør hvem som får hvilken tagg; vi verifiserer bare at serveren din har bekreftet det
Godt å vite
- Access Tags er autorisasjon, User Context er personalisering - bruk User Context til å fortelle KI-en om medlemmet; bruk Access Tags til å styre hvilken kunnskap KI-en får bruke
- Crawlet nettstedsinnhold er alltid offentlig - det kommer fra ditt offentlige nettsted, så det er ingenting å begrense; tagger gjelder tekst-, fil- og API-elementer
- Taggene på et element kombineres med OG - se Tagglogikk over; hver tagg på elementet må finnes i den besøkendes bevis
- Regenerering av nøkkelen ugyldiggjør alle gamle bevis - gjør det hvis nøkkelen kan ha lekket, og oppdater deretter sidene dine til å signere med den nye
- Taggnavnene bestemmer du selv - opptil 20 per element, 50 tegn hver, uten komma eller loddrette streker; de vises aldri i chatten besøkende ser
Passer sammen med User Context: den ene funksjonen styrer hvilken kunnskap KI-en får bruke for denne besøkende, den andre forteller KI-en hvem den besøkende er.
Brukerkontekst Send innloggede brukerdata til AI-chatboten din for personlige samtalerMerk: Access Tags er del av en Enterprise-avtale. Skriv til [email protected], så forklarer vi alt.