← Cloudflare One / cloudflare-one / access-controls / policies
Правила External Evaluation
С помощью Cloudflare Access вы можете создавать политики Allow или Block, которые оценивают пользователя по пользовательским критериям. Для этого добавьте External Evaluation правило в свою политику. External Evaluation селектор требует указания двух значений:
- Оценить URL : конечная точка API, содержащая вашу бизнес-логику.
- URL-адрес ключей : ключ, который Access использует, чтобы убедиться, что ответ пришёл от вашего API
После того как пользователь пройдёт аутентификацию через вашего поставщика идентификации, Access отправляет данные о его личности во внешний API по адресу Оценить URL. Внешний API возвращает Access ответ True или False, на основании которого Access разрешает или запрещает доступ пользователю. Для защиты от атак «человек посередине» Access подписывает все запросы ключом вашей учётной записи Access и проверяет, что ответы подписаны ключом по адресу URL-адрес ключей.
Правила External Evaluation можно настроить с помощью любого API-сервиса, но для быстрого старта мы рекомендуем использовать Cloudflare Workers.
Настройте внешний API и ключ с помощью Cloudflare Workers
Предварительные требования
- Аккаунт Workers
- Установка npm ↗
- Установка Node.js ↗
- Приложение, защищённое Access
1. Создайте новый Worker
-
Откройте терминал и клонируйте наш пример проекта.
npm create cloudflare@latest my-worker -- --template https://github.com/cloudflare/workers-access-external-auth-example -
Перейдите в каталог проекта.
cd my-worker -
Создайте Пространство имён Workers KV чтобы хранить ключ. Имя привязки должно быть
KVесли хотите выполнить пример в исходном виде.npx wrangler kv namespace create "KV"Команда выведет имя привязки и ID пространства имен KV, например
[[kv_namespaces]] binding = "KV" id = "YOUR_KV_NAMESPACE_ID" -
Откройте конфигурационный файл Wrangler в редакторе и вставьте следующее:
[[kv_namespaces]]: Добавьте результат, полученный на предыдущем шаге.<TEAM_NAME>: вашего Cloudflare One название команды.
{
"$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. Запрограммируйте свою бизнес-логику
- Откройте
index.jsи изменитеexternalEvaluationфункцию для обработки логики на основе любых данных identity, отправленных Access.
-
Разверните Worker в глобальной сети Cloudflare.
npx wrangler deploy
Worker будет развернут в вашем *.workers.dev поддомен на my-worker.<YOUR_SUBDOMAIN>.workers.dev.
3. Сгенерируйте ключ
Чтобы создать пару закрытого и открытого ключей RSA:
-
Откройте браузер и перейдите по адресу
https://my-worker.<YOUR_SUBDOMAIN>.workers.dev/keys. -
(Необязательно) Убедитесь, что ключ сохранён в
KVпространство имён:- На панели управления Cloudflare перейдите к разделу Workers KV страницу. Перейдите в Workers KV ↗
- Выберите Просмотр рядом с
my-worker-KV.
Другие форматы ключей (например, DSA) в настоящее время не поддерживаются.
4. Создайте правило External Evaluation
-
В Панель управления Cloudflare ↗, перейдите в Zero Trust > Контроль доступа > Политики.
-
Измените существующую политику или выберите Добавление политики.
-
Добавьте следующее правило в свою политику:
| Rule Type | Селектор | Оценить URL | URL-адрес ключей |
|---|---|---|---|
| Включить | External Evaluation | https://my-worker.<YOUR_SUBDOMAIN>.workers.dev/ |
https://my-worker.<YOUR_SUBDOMAIN>.workers.dev/keys/ |
-
Сохраните политику.
-
Перейдите в Контроль доступа > Приложения и измените приложение, к которому нужно применить правило External Evaluation.
-
В Политики вкладке добавьте политику, содержащую правило External Evaluation.
-
Выберите Save.
Теперь при входе пользователя в ваше приложение Access будет сверять его электронную почту, устройство, местоположение и другие данные, связанные с его идентификацией, с вашей бизнес-логикой.
Устранение неполадок Worker
Чтобы отладить правило External Evaluation:
-
Перейдите в каталог Worker.
cd my-worker -
Откройте конфигурационный файл Wrangler в редакторе и задайте
debugпеременную наTRUE. -
Разверните свои изменения.
npx wrangler deploy -
Далее запустите сессию для вывода журналов в режиме реального времени из своего Worker.
wrangler tail -f pretty -
Войдите в своё приложение Access.
В журналах сессии должны отображаться входящий и исходящий JWT. Входящий JWT был отправлен Access в Worker API, а исходящий JWT отправлен Worker обратно в Access.
-
Чтобы декодировать содержимое JWT, вы можете скопировать токен в jwt.io ↗.
Входящий JWT должен содержать данные удостоверения пользователя. Исходящий JWT должен выглядеть примерно так:
{ "success": true, "iat": 1655409315, "exp": 1655409375, "nonce": "9J2E9Xg6wYj8tlnA5MV4Zgp6t8rzmS0Q" }Access проверяет исходящий JWT по всем следующим критериям:
- Токен был подписан URL-адрес ключей.
- Срок действия ещё не истёк.
- API возвращает
"success": true. nonceне изменяется по сравнению со входящим JWT.nonceзначение уникально для каждого запроса.
Если любое условие не выполняется, правило External Evaluation возвращает false.