Nazaj na nadzorno ploščo

Dokumentacija

Naučite se uporabljati Asyntai

Access Tags

Omejite elemente baze znanja na pooblaščene obiskovalce — uveljavljeno na naših strežnikih, ne prek UI

Pojdi na Access Tags
Podjetniški

Pregled

Ni vsa vsebina za vse: dokumenti samo za člane, gradivo za določeno regijo, viri plačljivih ravni. Z Access Tags en sam klepetalni robot varno streže različnim občinstvom. Elementu baze znanja dodate oznako in od tega trenutka je element neviden za vsakega obiskovalca — razen za tiste, katerih stran to oznako predloži, podpisano z vašim lastnim strežnikom. Omejitev se uveljavlja v naši iskalni poizvedbi, še preden se model UI sploh vključi. Obiskovalec brez oznake vsebine ne more izvleči z zvitimi vprašanji, ker zanj nikoli ni bila pridobljena.

Kako deluje

  1. Elemente baze znanja označujete vi - na strani Access Tags ali neposredno prek API-ja; elementi brez oznak delujejo naprej za vse
  2. Vaš strežnik podpiše oznake vsakega obiskovalca - ko prijavljeni član naloži vašo stran, vaše zaledje določi njegove pravice in jih podpiše s skrivnim ključem, ki ga imate samo vi
  3. Gradnik pošlje podpisano potrdilo - potuje z vsakim sporočilom v klepetu; brskalnik ga le prenaša in ga ne more spremeniti, ne da bi pokvaril podpis
  4. Mi preverimo in filtriramo - veljaven podpis odklene elemente z ujemajočimi se oznakami; manjkajoče, spremenjeno ali poteklo potrdilo pomeni, da obiskovalec dobi samo javno vsebino

Nastavitev

Vklopite funkcijo na strani Access Tags v nadzorni plošči — podpisni ključ se ustvari samodejno. Hranite ga samo na svojem strežniku; kdorkoli ga ima, lahko ustvarja veljavna potrdila.

Vsebino označite na isti strani ali ob pošiljanju elementov prek API-ja:

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

Nato naj vaš strežnik izpiše podpisano potrdilo poleg odrezka gradnika. Podpiše se seznam oznak, ločenih z vejicami, povezan z navpično črto s časom poteka, kadar ga uporabljate:

<?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>

Isti podpis v Node.js in Pythonu:

// 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()

Brez časa poteka podpišite samo sam niz oznak. Z njim potrdilo preneha delovati v trenutku poteka — koristno, kadar je pravice mogoče odvzeti, saj mora obiskovalec znova naložiti stran pod vašim nadzorom, da dobi sveže potrdilo.

Kaj je zajamčeno

  • Uveljavljanje na strani strežnika - filter teče znotraj naše poizvedbe v bazo pri iskanju; za nepooblaščene obiskovalce označenih elementov v kontekstu UI sploh ni, zato nima kaj uhajati
  • Povsod fail-closed - brez podpisa, napačen podpis, poteklo potrdilo, izklopljena funkcija, znižan paket: v vsakem od teh primerov obiskovalec dobi samo javno vsebino, nikoli več
  • Brskalnik ne more ponarediti dostopa - urejanje oznak v razvijalskih orodjih pokvari podpis; ključ ima samo vaš strežnik
  • Vaša logika pravic ostaja vaša - nikoli ne izvemo, kako odločate, kdo dobi katero oznako; preverimo le, da je to potrdil vaš strežnik

Dobro je vedeti

  • Access Tags je avtorizacija, User Context personalizacija - z User Context povejte UI, kdo je član; z Access Tags nadzorujte, iz katerega znanja sme UI črpati
  • Preiskana vsebina spletnega mesta je vedno javna - prihaja z vašega javnega mesta, zato ni česa omejevati; oznake veljajo za besedilne, datotečne in API elemente
  • Obiskovalcu zadostuje ena ujemajoča se oznaka - element z dvema oznakama je na voljo obiskovalcu, ki nosi katerokoli od njiju
  • Ponovno generiranje ključa razveljavi vsa stara potrdila - storite to, če je ključ morda ušel, nato posodobite strani, da podpisujejo z novim
  • Imena oznak izberete sami - do 20 na element, vsaka 50 znakov, brez vejic in navpičnih črt; v klepetu, ki ga vidijo obiskovalci, se nikoli ne pojavijo

Dopolnjuje se z User Context: ena funkcija nadzoruje, katero znanje sme UI uporabiti za tega obiskovalca, druga UI pove, kdo je obiskovalec.

Kontekst uporabnika Posredujte podatke prijavljenega uporabnika vašemu klepetalnemu robotu z UI za prilagojene pogovore

Opomba: Access Tags je del pogodbe Enterprise. Pišite na [email protected] in vam vse razložimo.