Skip to content

Глава 7. Credentials — авторизация в сервисах

Credentials (учётные данные) — это централизованное хранилище секретов в n8n. API-ключи, токены, пароли хранятся зашифрованными и используются нодами, не попадая в историю выполнений и логи.

Как работает шифрование

n8n шифрует все credentials с помощью ключа N8N_ENCRYPTION_KEY. При первом запуске ключ генерируется автоматически и сохраняется в файл .n8n/config. В продакшене его нужно задать явно через переменную окружения — иначе при переезде на другой сервер вы не сможете расшифровать сохранённые данные.

bash
# docker-compose.yml
environment:
  - N8N_ENCRYPTION_KEY=your-strong-random-32-char-key

Никогда не теряйте ключ шифрования

Если N8N_ENCRYPTION_KEY изменится, все сохранённые credentials станут нечитаемыми. Создайте резервную копию ключа и храните его отдельно от бэкапов базы данных.

Создание Credential

  1. Перейдите Credentials в левом меню (или нажмите Ctrl+Shift+C).
  2. Нажмите Add credential.
  3. Выберите тип из списка (более 400 вариантов).
  4. Заполните поля и нажмите 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@ssw0rd

OAuth2

Для сервисов Google, Microsoft, GitHub, Notion и других, требующих авторизации пользователя через браузер.

Процесс настройки:

  1. Создайте приложение в консоли разработчика нужного сервиса.
  2. Скопируйте Client ID и Client Secret.
  3. Скопируйте OAuth Callback URL из n8n и укажите его как разрешённый redirect URI.
  4. Нажмите Connect my account — откроется браузер для авторизации.

После авторизации n8n хранит refresh token и автоматически обновляет access token.

Пример для Google Sheets:

ПолеЗначение
Client ID123456789-abc.apps.googleusercontent.com
Client SecretGOCSPX-...
Scopehttps://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 может предоставить доступ конкретным пользователям или всей команде:

  1. Откройте credential → SharingAdd users.
  2. Выбранные пользователи увидят credential в своих нодах, но не смогут просмотреть значения полей.

Credential в выражениях (Edge Case)

Иногда нужно использовать значение из credential напрямую в выражении, например, для формирования URL с токеном. Это не рекомендуется по соображениям безопасности (значение попадёт в данные выполнения), но технически возможно через ноду Code:

javascript
// НЕ делайте так — используйте 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.

Неофициальная документация. n8n — продукт n8n GmbH.