← Cloudflare One / cloudflare-one / access-controls / policies
Pravidla External Evaluation
S Cloudflare Access můžete vytvářet zásady Allow nebo Block, které vyhodnocují uživatele na základě vlastních kritérií. Provádí se to přidáním External Evaluation pravidlo do zásady. External Evaluation selektor vyžaduje dvě hodnoty:
- Vyhodnotit adresu URL : endpoint API obsahující vaši obchodní logiku.
- Keys URL : klíč, který Access používá k ověření, že odpověď pochází z vašeho API
Poté, co se uživatel ověří u vašeho poskytovatele identity, odešle Access jeho identitu na externí API na adrese Vyhodnotit adresu URL. Externí API vrací službě Access odpověď True nebo False, na jejímž základě Access uživateli přístup povolí nebo zamítne. Aby se zabránilo útokům typu man-in-the-middle, Access podepisuje všechny požadavky klíčem účtu Access a kontroluje, zda jsou odpovědi podepsané klíčem na Keys URL.
Pravidla External Evaluation můžete nastavit pomocí libovolné API služby, pro rychlý start ale doporučujeme použít Cloudflare Workers.
Nastavení externího API a klíče pomocí Cloudflare Workers
Předpoklady
- účet Workers
- Nainstalujte npm ↗
- Nainstalujte Node.js ↗
- Aplikace chráněná pomocí Access
1. Vytvořte nový Worker
-
Otevřete terminál a naklonujte náš ukázkový projekt.
npm create cloudflare@latest my-worker -- --template https://github.com/cloudflare/workers-access-external-auth-example -
Přejděte do adresáře projektu.
cd my-worker -
Vytvořte Workers KV namespace k uložení klíče. Název vazby by měl být
KV, pokud chcete spustit příklad tak, jak je napsaný.npx wrangler kv namespace create "KV"Příkaz vypíše název bindingu a ID KV namespace, například
[[kv_namespaces]] binding = "KV" id = "YOUR_KV_NAMESPACE_ID" -
Otevřete Konfigurační soubor Wrangler v editoru a vložte následující:
[[kv_namespaces]]: Přidejte výstup vygenerovaný v předchozím kroku.<TEAM_NAME>: váš Cloudflare One název týmu.
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "my-worker",
"workers_dev": true,
// Set this to today's date
"compatibility_date": "2026-08-28",
"main": "index.js",
"kv_namespaces": [
{
"binding": "KV",
"id": "YOUR_KV_NAMESPACE_ID"
}
],
"vars": {
"TEAM_DOMAIN": "<TEAM_NAME>.cloudflareaccess.com",
"DEBUG": false
}
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "my-worker"
workers_dev = true
# Set this to today's date
compatibility_date = "2026-08-28"
main = "index.js"
[[kv_namespaces]]
binding = "KV"
id = "YOUR_KV_NAMESPACE_ID"
[vars]
TEAM_DOMAIN = "<TEAM_NAME>.cloudflareaccess.com"
DEBUG = false2. Naprogramujte svou obchodní logiku
- Otevřete
index.jsa upravteexternalEvaluationfunkci k provedení logiky nad libovolnými daty založenými na identitě, která odesílá Access.
-
Nasaďte Worker do globální sítě Cloudflare.
npx wrangler deploy
Worker bude nasazen do vašeho *.workers.dev subdoménu na my-worker.<YOUR_SUBDOMAIN>.workers.dev.
3. Vygenerujte klíč
Chcete-li vygenerovat pár soukromého a veřejného klíče RSA:
-
Otevřete prohlížeč a přejděte na
https://my-worker.<YOUR_SUBDOMAIN>.workers.dev/keys. -
(Volitelné) Ověřte, že byl klíč uložen v
KVnamespace:- V dashboardu Cloudflare přejděte na Workers KV . Přejděte na Workers KV ↗
- Vyberte Zobrazit vedle
my-worker-KV.
Jiné formáty klíčů (například DSA) v současné době nejsou podporovány.
4. Vytvořte pravidlo External Evaluation
-
V Cloudflare dashboard ↗, přejděte na Zero Trust > Řízení přístupu > Zásady.
-
Upravte stávající zásadu nebo vyberte Přidat zásadu.
-
Přidejte do své zásady následující pravidlo:
| Typ pravidla | Selektor | Vyhodnotit adresu URL | Keys URL |
|---|---|---|---|
| Include | External Evaluation | https://my-worker.<YOUR_SUBDOMAIN>.workers.dev/ |
https://my-worker.<YOUR_SUBDOMAIN>.workers.dev/keys/ |
-
Uložte zásadu.
-
Přejděte na Řízení přístupu > Aplikace a upravte aplikaci, na kterou chcete použít pravidlo External Evaluation.
-
V Zásady kartě přidejte zásadu, která obsahuje pravidlo External Evaluation.
-
Vyberte Save.
Když se uživatel přihlásí do vaší aplikace, Access nyní podle vaší obchodní logiky zkontroluje jeho e-mail, zařízení, lokalitu a další údaje založené na identitě.
Odstraňování problémů s Workerem
Chcete-li ladit pravidlo External Evaluation:
-
Přejděte do adresáře Workeru.
cd my-worker -
Otevřete Konfigurační soubor Wrangler v editoru a nastavte
debugproměnnou naTRUE. -
Nasaďte své změny.
npx wrangler deploy -
Dále spusťte relaci pro výpis protokolů z vašeho Workeru v reálném čase.
wrangler tail -f pretty -
Přihlaste se do své aplikace Access.
V protokolech relace by se měl zobrazit příchozí a odchozí JWT. Příchozí JWT odeslal Access do Worker API, zatímco odchozí JWT odeslal Worker zpět do Access.
-
Chcete-li dekódovat obsah JWT, můžete token zkopírovat do jwt.io ↗.
Příchozí JWT by měl obsahovat identifikační údaje uživatele. Odchozí JWT by měl vypadat podobně jako:
{ "success": true, "iat": 1655409315, "exp": 1655409375, "nonce": "9J2E9Xg6wYj8tlnA5MV4Zgp6t8rzmS0Q" }Access u odchozího JWT kontroluje všechna následující kritéria:
- Token byl podepsán Keys URL.
- Datum vypršení platnosti ještě neuplynulo.
- API vrací
"success": true. nonceje nezměněné oproti příchozímu JWT.noncehodnota je pro každý požadavek jedinečná.
Pokud kterákoli podmínka selže, pravidlo External Evaluation se vyhodnotí jako false.