Access Tags
Apribokite žinių elementus tik įgaliotiems lankytojams — užtikrinama mūsų serveriuose, o ne DI
Apžvalga
Ne visas turinys skirtas visiems: dokumentai tik nariams, konkretaus regiono medžiaga, mokamų lygių ištekliai. Su Access Tags vienas pokalbių robotas saugiai aptarnauja skirtingas auditorijas. Uždedate žymą ant žinių elemento ir nuo tos akimirkos elementas nematomas jokiam lankytojui — išskyrus tuos, kurių puslapis pateikia tą žymą, pasirašytą jūsų pačių serverio. Apribojimas užtikrinamas mūsų paieškos užklausoje dar prieš DI modeliui apskritai dalyvaujant. Lankytojas be žymos turinio gudriais klausimais neišgaus, nes jam jis niekada nebuvo paimtas.
Kaip tai veikia
- Žinių elementus žymite jūs - Access Tags puslapyje arba tiesiogiai per API; nepažymėti elementai toliau veikia visiems
- Jūsų serveris pasirašo kiekvieno lankytojo žymas - kai prisijungęs narys įkelia jūsų puslapį, jūsų vidinė sistema nustato jo teises ir pasirašo jas slaptu raktu, kurį turite tik jūs
- Valdiklis siunčia pasirašytą patvirtinimą - jis keliauja su kiekviena pokalbio žinute; naršyklė jį tik perneša ir negali pakeisti nesugadinusi parašo
- Mes patikriname ir filtruojame - galiojantis parašas atrakina elementus su atitinkančiomis žymomis; trūkstamas, pakeistas ar pasibaigęs patvirtinimas reiškia, kad lankytojas gauna tik viešą turinį
Kaip nustatyti
Įjunkite funkciją valdymo skydelio Access Tags puslapyje — pasirašymo raktas sugeneruojamas automatiškai. Laikykite jį tik savo serveryje; kiekvienas, kas jį turi, gali kurti galiojančius patvirtinimus.
Žymėkite turinį tame pačiame puslapyje arba siųsdami elementus per API:
POST /api/v1/knowledge/text/
{
"title": "Members-only price list",
"content": "...",
"website_id": "123",
"access_tags": ["premium"]
}
Tada tegul jūsų serveris išveda pasirašytą patvirtinimą šalia valdiklio fragmento. Pasirašoma žinutė — kableliais atskirtas žymų sąrašas, sujungtas vertikaliu brūkšniu su galiojimo pabaigos laiku, kai jį naudojate:
<?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>
Tas pats parašas Node.js ir 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()
Be galiojimo pabaigos pasirašykite tik pačią žymų eilutę. Su ja patvirtinimas nustoja veikti pasibaigus terminui — naudinga, kai teises galima atšaukti, nes lankytojas turi iš naujo įkelti jūsų valdomą puslapį, kad gautų šviežią patvirtinimą.
Kas garantuojama
- Užtikrinimas serverio pusėje - filtras veikia mūsų duomenų bazės užklausoje paieškos metu; neįgaliotiems lankytojams pažymėtų elementų DI kontekste apskritai nėra, tad nėra kam nutekėti
- Visur fail-closed - nėra parašo, blogas parašas, pasibaigęs patvirtinimas, išjungta funkcija, pažemintas planas: kiekvienu iš šių atvejų lankytojas gauna tik viešą turinį, niekada daugiau
- Naršyklė negali suklastoti prieigos - žymų redagavimas kūrėjo įrankiuose sugadina parašą; raktą turi tik jūsų serveris
- Jūsų teisių logika lieka jūsų - mes niekada nesužinome, kaip sprendžiate, kas kokią žymą gauna; tik patikriname, kad jūsų serveris tai patvirtino
Verta žinoti
- Access Tags — tai autorizacija, User Context — personalizacija - naudokite User Context papasakoti DI apie narį; naudokite Access Tags valdyti, kokiomis žiniomis DI gali remtis
- Nuskaitytas svetainės turinys visada viešas - jis iš jūsų viešos svetainės, tad nėra ko riboti; žymos taikomos teksto, failų ir API elementams
- Lankytojui užtenka vienos atitinkančios žymos - elementas su dviem žymomis pasiekiamas lankytojui, turinčiam bet kurią iš jų
- Naujas raktas panaikina visus senus patvirtinimus - padarykite tai, jei raktas galėjo nutekėti, tada atnaujinkite puslapius, kad pasirašinėtų nauju
- Žymų pavadinimus renkatės jūs - iki 20 elementui, po 50 simbolių, be kablelių ir vertikalių brūkšnių; lankytojų matomame pokalbyje jos niekada nerodomos
Dera su User Context: viena funkcija valdo, kokias žinias DI gali naudoti šiam lankytojui, kita pasako DI, kas lankytojas yra.
Naudotojo kontekstas Perduokite prisijungusio naudotojo duomenis savo DI pokalbių robotui personalizuotiems pokalbiamsPastaba: Access Tags yra Enterprise sutarties dalis. Rašykite [email protected] ir viską paaiškinsime.