Аутентификация
AstroAPI поддерживает несколько методов аутентификации в зависимости от вашего сценария использования.
Аутентификация по API-ключу
API-ключи — рекомендуемый метод для взаимодействия между серверами.
Получение API-ключа
- Войдите в панель управления AstroAPI
- Перейдите в Настройки > API-ключи
- Нажмите Создать API-ключ
- Настройте разрешения и ограничения запросов
- Скопируйте сгенерированный ключ (он больше не будет показан)
Использование API-ключей
Включите ваш API-ключ в заголовок X-Api-Key:
curl -X GET "https://api.astroapi.cloud/api/calc/natal" \
-H "X-Api-Key: ak_live_xxxxxxxxxxxx"Разрешения API-ключа
API-ключи можно ограничить определёнными разрешениями:
| Разрешение | Описание |
|---|---|
calc:read | Доступ к эндпоинтам расчётов |
content:read | Доступ к эндпоинтам контента и интерпретаций |
chart:read | Доступ к эндпоинтам визуализации карт |
modules:read | Доступ к приобретённым модулям |
Роли
AstroAPI использует ролевое управление доступом в рамках организаций:
| Роль | Описание |
|---|---|
owner | Полный доступ ко всем функциям организации |
manager | Управление пользователями, биллингом и контентом |
member | Базовый доступ к расчётам и чтению контента |
Разрешения по ролям
| Разрешение | owner | manager | member | Описание |
|---|---|---|---|---|
org:create | ✅ | Создание организации | ||
org:read | ✅ | ✅ | ✅ | Чтение данных организации |
org:update | ✅ | ✅ | Обновление организации | |
org:users:read | ✅ | ✅ | Чтение пользователей | |
org:users:create | ✅ | ✅ | Приглашение пользователей | |
org:users:update | ✅ | ✅ | Обновление пользователей | |
org:users:delete | ✅ | ✅ | Удаление пользователей | |
billing:read | ✅ | ✅ | Просмотр биллинга | |
billing:manage | ✅ | ✅ | Управление биллингом | |
content:read | ✅ | ✅ | ✅ | Чтение контента |
content:create | ✅ | ✅ | Создание контента | |
content:update | ✅ | ✅ | Обновление контента | |
content:delete | ✅ | ✅ | Удаление контента | |
content:custom-copy | ✅ | ✅ | ✅ | Создание пользовательских копий |
content:restore | ✅ | ✅ | Восстановление контента | |
calc:use | ✅ | ✅ | ✅ | Использование эндпоинтов расчётов |
chart:use | ✅ | ✅ | ✅ | Использование эндпоинтов карт |
modules:read | ✅ | ✅ | ✅ | Чтение информации о модулях |
admin:access | ✅ | Административный доступ |
Контекст организации
Для многопользовательских приложений API-ключи привязаны к организациям. Контекст организации применяется автоматически на основе используемого API-ключа.
Ограничения по доменам
API-ключи можно настроить с ограничениями по доменам, чтобы ограничить, какие сайты могут их использовать:
example.com— точное совпадение домена*.example.com— все поддомены*— разрешить все домены (не рекомендуется)
Настройте ограничения по доменам в панели управления при создании или редактировании API-ключа.
Важное ограничение
Ограничения по доменам защищают только от злоупотреблений через браузер. Они основаны на заголовках Origin и Referer, которые браузеры соблюдают, но которые легко подделать вне браузера (например, через curl, скрипты или серверный код).
Использование на стороне клиента и на стороне сервера
Взаимодействие между серверами (рекомендуется)
Для production-приложений всегда используйте API-ключи на вашем backend-сервере:
┌─────────────┐ ┌─────────────────┐ ┌─────────────┐
│ Браузер │ ───► │ Ваш backend │ ───► │ AstroAPI │
│ (без ключей)│ │ (API-ключ здесь)│ │ │
└─────────────┘ └─────────────────┘ └─────────────┘Этот подход:
- Обеспечивает безопасность и скрытость вашего API-ключа
- Позволяет добавить собственный уровень аутентификации
- Предотвращает извлечение API-ключа конечными пользователями
- Позволяет подписывать запросы и применять дополнительные меры безопасности
Использование на стороне клиента / в браузере
Если вам необходимо использовать API-ключи непосредственно в браузере (например, во встроенных виджетах на статических сайтах), учитывайте следующие ограничения:
- API-ключи видны в исходном коде JavaScript и сетевых запросах
- Любой может извлечь ключ с вашего сайта
- Ограничения по доменам предотвращают только использование ключа другими сайтами через JavaScript — они не мешают скопировать ключ и использовать его в другом месте
Для использования на стороне клиента рекомендуем:
- Включить ограничения по доменам
- Установить строгие ограничения запросов
- Использовать короткое время жизни ключей
- Отслеживать использование на предмет аномалий
Ответственность клиента
Важно
Вы несёте ответственность за безопасность и использование ваших API-ключей.
Все API-запросы, выполненные с вашим API-ключом, учитываются в вашей квоте и тарифицируются на ваш счёт, независимо от того, сделали ли их вы или тот, кто получил ваш ключ.
Если вы раскроете API-ключ в коде на стороне клиента и он будет использован злоумышленниками, вы несёте ответственность за возникшие расходы. AstroAPI не может отличить легитимные запросы от несанкционированных, совершённых с действительным API-ключом.
Чтобы минимизировать риски:
- Используйте взаимодействие между серверами везде, где это возможно
- Никогда не фиксируйте API-ключи в системах контроля версий
- Немедленно меняйте ключи, если подозреваете их компрометацию
- Настройте оповещения об использовании, чтобы обнаруживать неожиданные всплески
Рекомендации по безопасности
- Используйте взаимодействие между серверами для production-приложений
- Никогда не раскрывайте API-ключи в коде на стороне клиента без крайней необходимости
- Периодически меняйте API-ключи
- Используйте минимально необходимые разрешения
- Включайте ограничения по доменам для клиентских ключей
- Устанавливайте соответствующие ограничения запросов
- Отслеживайте использование API-ключей в панели управления