Глава 7. Credentials — авторизация в сервисах
Credentials (учётные данные) — это централизованное хранилище секретов в n8n. API-ключи, токены, пароли хранятся зашифрованными и используются нодами, не попадая в историю выполнений и логи.
Как работает шифрование
n8n шифрует все credentials с помощью ключа N8N_ENCRYPTION_KEY. При первом запуске ключ генерируется автоматически и сохраняется в файл .n8n/config. В продакшене его нужно задать явно через переменную окружения — иначе при переезде на другой сервер вы не сможете расшифровать сохранённые данные.
# docker-compose.yml
environment:
- N8N_ENCRYPTION_KEY=your-strong-random-32-char-keyНикогда не теряйте ключ шифрования
Если N8N_ENCRYPTION_KEY изменится, все сохранённые credentials станут нечитаемыми. Создайте резервную копию ключа и храните его отдельно от бэкапов базы данных.
Создание Credential
- Перейдите Credentials в левом меню (или нажмите Ctrl+Shift+C).
- Нажмите Add credential.
- Выберите тип из списка (более 400 вариантов).
- Заполните поля и нажмите Save.
Credential сразу становится доступным во всех нодах соответствующего типа.
Типы аутентификации
API Key / Bearer Token
Самый распространённый тип. API возвращает токен, который нужно передавать в заголовке каждого запроса.
Credential типа Header Auth:
Name: Authorization
Value: Bearer sk-abc123...Или типа API Key (для сервисов с фиксированным заголовком):
API Key: sk-abc123...n8n сам подставит нужный заголовок.
Basic Auth
Логин и пароль, закодированные в Base64 и переданные в заголовке Authorization. Поддерживается большинством сервисов как резервный метод.
User: admin
Password: p@ssw0rdOAuth2
Для сервисов Google, Microsoft, GitHub, Notion и других, требующих авторизации пользователя через браузер.
Процесс настройки:
- Создайте приложение в консоли разработчика нужного сервиса.
- Скопируйте Client ID и Client Secret.
- Скопируйте OAuth Callback URL из n8n и укажите его как разрешённый redirect URI.
- Нажмите Connect my account — откроется браузер для авторизации.
После авторизации n8n хранит refresh token и автоматически обновляет access token.
Пример для Google Sheets:
| Поле | Значение |
|---|---|
| Client ID | 123456789-abc.apps.googleusercontent.com |
| Client Secret | GOCSPX-... |
| Scope | https://www.googleapis.com/auth/spreadsheets |
SSH Key
Для доступа к серверам по SSH:
Host: 192.168.1.1
Port: 22
User: deploy
Private Key: -----BEGIN OPENSSH PRIVATE KEY-----...Database Credentials
Для прямых подключений к базам данных (PostgreSQL, MySQL, MongoDB):
Host: db.example.com
Port: 5432
Database: production
User: n8n_reader
Password: secret
SSL: trueИспользование в нодах
Когда credential создан, в любой совместимой ноде появляется выпадающий список. Нода автоматически использует сохранённые данные — в конфигурации ноды секреты не отображаются.
┌─────────────────────────────────┐
│ HTTP Request │
│ Authentication: Header Auth ▼ │
│ Credential: My API Token ▼ │
│ URL: https://api.service.com │
└─────────────────────────────────┘Совместный доступ (Enterprise и Self-hosted)
В n8n Cloud и Enterprise credentials можно делиться между пользователями.
Владелец credential может предоставить доступ конкретным пользователям или всей команде:
- Откройте credential → Sharing → Add users.
- Выбранные пользователи увидят credential в своих нодах, но не смогут просмотреть значения полей.
Credential в выражениях (Edge Case)
Иногда нужно использовать значение из credential напрямую в выражении, например, для формирования URL с токеном. Это не рекомендуется по соображениям безопасности (значение попадёт в данные выполнения), но технически возможно через ноду Code:
// НЕ делайте так — используйте HTTP Request с Authentication
// Это только для понимания механизма
const cred = await this.getCredentials('httpHeaderAuth');
console.log(cred.value); // доступ к значениюПрактика: подключение к нескольким окружениям
Часто нужно иметь отдельные credentials для dev и prod окружений. Создайте два credential одного типа с разными именами:
Telegram Bot API — Development (тестовый бот)
Telegram Bot API — Production (боевой бот)Переключайтесь между ними в настройках ноды — воркфлоу остаётся неизменным.
Именование credentials
Используйте единый формат: [Сервис] — [Описание/Окружение]. Например: GitHub — Personal, SendGrid — Notifications, PostgreSQL — Prod. Это облегчает поиск при большом количестве credentials.