BLUEPRINT
Глава 7: Безопасность и Аутентификация
7.1 Обзор
Механизмы безопасности — важная часть протокола, обеспечивающая контроль провайдерами навыков над тем, кто может обнаруживать и вызывать их навыки.
7.2 Трёхуровневый Контроль Доступа
| Уровень | Видимость обнаружения | Разрешение вызова | Применение |
|---|---|---|---|
public | Видимо всем | Без аутентификации | Открытые API |
restricted | Видимо всем | Требуется аутентификация | Коммерческие API |
private | Видимо только после аутентификации | Требуется аутентификация | Внутренние инструменты |
7.3 Методы Аутентификации
API Key
{ "type": "api_key", "description": "Передать API Key через HTTP Header", "header": "X-API-Key" }
OAuth 2.0
{
"type": "oauth2",
"oauth2": {
"authorization_url": "https://example.com/oauth/authorize",
"token_url": "https://example.com/oauth/token",
"scopes": { "skill:invoke": "Вызов навыка", "skill:read": "Чтение информации", "skill:admin": "Управление конфигурацией" }
}
}
Пользовательская Аутентификация
{
"type": "custom",
"custom": {
"instructions": "Подписать тело запроса HMAC-SHA256 и поместить подпись в header X-Signature",
"parameters": [{ "name": "secret_key", "type": "string", "description": "Секретный ключ для HMAC-подписи", "required": true }]
}
}
Без Аутентификации
{ "type": "none" }
7.4 Обработка Ошибок Аутентификации
Ошибка Аутентификации (401)
{ "error": { "code": "AUTH_REQUIRED", "message": "Authentication is required to invoke this skill", "details": { "required_auth_type": "oauth2", "authorization_url": "https://example.com/oauth/authorize" } } }
Недостаточные Права (403)
{ "error": { "code": "PERMISSION_DENIED", "message": "Insufficient permissions to invoke this skill", "details": { "required_scopes": ["skill:invoke"], "current_scopes": ["skill:read"] } } }
7.5 Лучшие Практики Безопасности
- Вся коммуникация должна использовать HTTPS
- API Keys передавать через Headers, избегая URL
- OAuth 2.0 Tokens должны иметь разумное время истечения
- Провайдеры должны реализовать ограничение скорости
- Чувствительные навыки должны использовать политику
private
