Документация / AsyncAPI

Безопасность и привязки

Security Scheme — схемы безопасности

Схемы описываются в components.securitySchemes, а применяются в security сервера.

typeНазначениеПоля
userPasswordлогин и пароль—
apiKeyключin: user или password
X509сертификат клиента—
symmetricEncryption, asymmetricEncryptionшифрование—
httpApiKeyключ в HTTPname, in: query, header, cookie
httpHTTP-авторизацияscheme, bearerFormat
oauth2OAuth 2.0flows (как в OpenAPI)
openIdConnectOpenID ConnectopenIdConnectUrl
plain, scramSha256, scramSha512, gssapiмеханизмы SASL (Kafka) — с версии 2.1—

Требование безопасности сервера — объект «имя схемы → список областей доступа» (для схем без областей — пустой список); элементы массива security — альтернативы.

asyncapi: 2.6.0
info:
  title: Сервис заказов
  version: 1.0.0
servers:
  production:
    url: kafka.example.ru:9093
    protocol: kafka-secure
    security:
      - saslScram: []
channels:
  orders.created:
    subscribe:
      message:
        payload:
          type: object
components:
  securitySchemes:
    saslScram:
      type: scramSha512
      description: SASL/SCRAM-SHA-512 поверх TLS

Bindings — привязки к протоколам

Bindings задают настройки конкретного протокола, которые не описываются общей моделью: ключ сообщения Kafka, тип обменника RabbitMQ, уровень QoS в MQTT. Их можно указать у сервера, канала, операции и сообщения:

УровеньПримеры
servers.*.bindingsпараметры подключения, реестр схем
channels.*.bindingsтип обменника и очереди AMQP, настройки топика
operation.bindingsгруппа потребителей и идентификатор клиента Kafka, qos MQTT
message.bindingsключ сообщения Kafka, заголовки HTTP

Kafka

channels:
  orders.created:
    subscribe:
      bindings:
        kafka:
          clientId:
            type: string
            enum: [orders-service]
      message:
        bindings:
          kafka:
            key:
              type: string
              description: Идентификатор заказа — сообщения одного заказа идут в одну партицию
        payload:
          type: object

AMQP (RabbitMQ)

channels:
  orders.events:
    bindings:
      amqp:
        is: routingKey
        exchange:
          name: orders
          type: topic
          durable: true
          autoDelete: false
    subscribe:
      bindings:
        amqp:
          deliveryMode: 2
      message:
        payload:
          type: object

MQTT

channels:
  devices/{deviceId}/telemetry:
    parameters:
      deviceId:
        schema:
          type: string
    publish:
      bindings:
        mqtt:
          qos: 1
          retain: false
      message:
        payload:
          type: object

Состав полей привязок зависит от протокола и версии привязок; полный перечень — в репозитории asyncapi/bindings.

Обновлено: 30 сентября 2026 г.