Перейти до основного вмісту

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

Модуль 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 ключ на основі заголовка

    # У скрипті трансформації
    result['headers'] = {
    'X-API-Key': 'your-api-key-here'
    }
  2. API ключ як параметр запиту

    # Додавання до URL
    url = f"{base_url}?api_key={api_key}"

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

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

  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 користувача
Токен закінчивсяПеревищено термін дії токенаРеалізуйте механізм оновлення токена
Помилка формату заголовкаНеправильний синтаксис заголовкаПереглядьте формат заголовка автентифікації

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

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