📄 Посібник з налаштування автентифікації

Модуль BJET API синхронізації підтримує три методи автентифікації для захисту ваших API інтеграцій. Цей посібник містить детальні інструкції з налаштування для кожного типу автентифікації.

Огляд

Автентифікація гарантує, що тільки авторизовані системи можуть отримати доступ до ваших API ендпоінтів. Модуль підтримує:

  • Без автентифікації - Для внутрішніх або довірених мереж
  • Базова автентифікація - Автентифікація за ім'ям користувача та паролем
  • Bearer Token - Токенна автентифікація для сучасних API

Методи автентифікації

1. Без автентифікації

Використовуйте цей метод тільки для:

  • Внутрішніх API у довірених мережах
  • Середовищ розробки та тестування
  • Публічних API, які не потребують автентифікації

Конфігурація

  1. Перейдіть до Налаштування → Технічні → Конфігурації API синхронізації
  2. У розділі автентифікації виберіть "Жодної"
  3. Залиште поля автентифікації пустими
  4. Збережіть конфігурацію
⚠️

Примітка щодо безпеки

Відсутність автентифікації слід використовувати тільки в безпечних, внутрішніх середовищах. Ніколи не використовуйте це для продуктивних API, доступних в інтернеті.

2. Базова автентифікація

Базова автентифікація надсилає облікові дані з кожним запитом, використовуючи HTTP заголовок Authorization.

Кроки конфігурації

  1. Створення облікових даних

    • Створіть спеціального API користувача у вашій зовнішній системі
    • Створіть надійний пароль
    • Зберігайте облікові дані безпечно
  2. Налаштування в Odoo

    # У конфігурації API синхронізації
    Тип автентифікації: Базова
    Ім'я користувача: api_user
    Пароль: ********
    
  3. Формат заголовка Модуль автоматично форматує заголовок як:

    Authorization: Basic base64(username:password)
    

Найкращі практики безпеки

  • Використовуйте HTTPS для шифрування облікових даних при передачі
  • Регулярно змінюйте паролі
  • Використовуйте надійні, унікальні паролі
  • Відстежуйте логи автентифікації на предмет підозрілої активності

3. Автентифікація Bearer Token

Bearer токени забезпечують більш безпечний та гнучкий метод автентифікації.

Кроки конфігурації

  1. Отримання токена

    • Створіть токен від провайдера зовнішнього API
    • Або створіть OAuth2 токен доступу
    • Зберігайте токен безпечно
  2. Налаштування в Odoo

    # У конфігурації API синхронізації
    Тип автентифікації: Bearer Token
    Токен: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
    
  3. Формат заголовка Модуль автоматично додає:

    Authorization: Bearer <token>
    

Управління токенами

  • Закінчення терміну дії токена: Відстежуйте дати закінчення терміну дії токенів
  • Оновлення токенів: Реалізуйте автоматичне оновлення токенів, якщо підтримується
  • Ротація токенів: Регулярно змінюйте токени для безпеки
  • Безпечне зберігання: Ніколи не фіксуйте токени у системі контролю версій

Динамічна автентифікація

Для складних сценаріїв використовуйте Python скрипти для створення динамічної автентифікації:

def compute_auth_header(sync_line):
    """Створення динамічної автентифікації на основі контексту"""
    import hmac
    import hashlib
    import time
    
    # Приклад: Створення токена на основі часу
    timestamp = str(int(time.time()))
    secret = sync_line.api_config_id.get_secret_key()
    
    # Створення HMAC підпису
    signature = hmac.new(
        secret.encode(),
        timestamp.encode(),
        hashlib.sha256
    ).hexdigest()
    
    return {
        'X-Timestamp': timestamp,
        'X-Signature': signature
    }

Інтеграція OAuth 2.0

Для автентифікації OAuth 2.0:

Процес налаштування

  1. Реєстрація додатку

    • Зареєструйте ваш екземпляр Odoo у провайдера OAuth
    • Отримайте Client ID та Client Secret
    • Налаштуйте URL переадресації
  2. Обмін токенами

    import requests
    
    def get_oauth_token(client_id, client_secret):
        response = requests.post(
            'https://oauth.provider.com/token',
            data={
                'grant_type': 'client_credentials',
                'client_id': client_id,
                'client_secret': client_secret
            }
        )
        return response.json()['access_token']
    
  3. Зберігання токенів

    • Безпечно зберігайте токени в Odoo
    • Реалізуйте автоматичне оновлення перед закінченням терміну дії
    • Обробляйте відкликання токенів

Автентифікація API ключем

Деякі API використовують власну автентифікацію API ключем:

Конфігурація

  1. API ключ на основі заголовка
    • Перейдіть на вкладку Заголовки у конфігурації API
    • Додайте новий рядок у таблицю заголовків
    • Встановіть поле Ключ як X-API-Key
    • Встановіть поле Значення як your-api-key-here

Тестування автентифікації

Кроки перевірки

  1. Тест з'єднання

    # Базова автентифікація
    curl -u username:password https://api.example.com/test
    
    # Bearer Token
    curl -H "Authorization: Bearer token" https://api.example.com/test
    
  2. Моніторинг логів

    • Перевірте логи Odoo на помилки автентифікації
    • Переглядайте логи доступу зовнішнього API
    • Перевірте коди відповіді (401 = Неавторизовано)
  3. Усунення несправностей

    • Переконайтеся, що облікові дані правильні
    • Перевірте закінчення терміну дії токена
    • Переконайтеся у правильному форматуванні заголовка
    • Перевірте дозволи ендпоінту API

Рекомендації щодо безпеки

Найкращі практики

  1. Завжди використовуйте HTTPS

    • Шифруйте всі API комунікації
    • Перевіряйте SSL сертифікати
    • Використовуйте TLS 1.2 або вище
  2. Управління обліковими даними

    • Зберігайте облікові дані в змінних середовища
    • Використовуйте вбудоване шифрування Odoo для чутливих даних
    • Ніколи не логуйте деталі автентифікації
  3. Контроль доступу

    • Впровадьте білий список IP, де це можливо
    • Використовуйте обмеження швидкості для запобігання зловживанням
    • Відстежуйте підозрілі патерни автентифікації
  4. Аудит та відповідність

    • Логуйте всі спроби автентифікації
    • Регулярні аудити безпеки
    • Дотримуйтесь правил захисту даних

Поширені проблеми та рішення

Проблема Причина Рішення
401 Неавторизовано Недійсні облікові дані Перевірте ім'я користувача/пароль або токен
403 Заборонено Недостатні дозволи Перевірте дозволи API користувача
Токен закінчився Перевищено термін дії токена Реалізуйте механізм оновлення токена
Помилка формату заголовка Неправильний синтаксис заголовка Переглядьте формат заголовка автентифікації

Наступні кроки

Пов'язана документація