HTTP

Permite a configuração de um endpoint que receberá uma requisição com as mensagens trafegadas.

Parâmetros

Parâmetros aceitos para esse tipo de sindicância de destino:

CampoDescriçãoValor

http.verify_token

Token de verificação enviado no header de cada mensagem entregue pelo Firehose

DEPRECATED Tipo: string Obrigatório

Chave de assinatura de conteúdo (HMAC-SHA256)

Tipo: string Obrigatório

http.verb

Tipo da requisição

Tipo: enum[POST PUT PATCH] Obrigatório

http.headers

Cabeçalhos da requisição

Tipo: object Valor padrão: {}

http.basic_auth

Autenticação básica da requisição

Tipo: object Valor padrão: {}

http.basic_auth.user_id

Identificador de acesso

Tipo: string Valor padrão: -

http.basic_auth.password

Senha de acesso

Tipo: string Valor padrão: -

http.oauth2

Autenticação oauth 2 da requisição

Tipo: object Valor padrão: {}

http.oauth2.client_key

Chave do cliente da API

Tipo: string Obrigatório

http.oauth2.client_secret

Segredo do cliente da API

Tipo: string Obrigatório

http.oauth2.token_url

Url do serviço de autenticação

Tipo: string Obrigatório

http.oauth2.scopes

Escopos de autenticação

Tipo: []string Valor padrão: []

http.oauth2.endpoint_params

Parâmetros adicionais do serviço de autenticação

Tipo: map[string][]string Valor padrão: {}

http.tls

Configuração de TLS

Tipo: object Valor padrão: {}

http.tls.enabled

Habilitar TLS

Tipo: boolean Obrigatório

http.tls.skip_cert_verify

Ignorar verificação de certificado

Tipo: boolean Obrigatório

http.tls.root_cas

Certificado principal

Tipo: boolean Valor padrão: ""

http.tls.enable_renegotiation

Se o servidor remoto deve solicitar renegociação

Tipo: boolean Valor padrão: false

http.tls.client_certs

Lista de certificados do cliente

Tipo: list Valor padrão: []

http.tls.client_certs.cert

Certificado

Tipo: string Obrigatório

http.tls.client_certs.key

Chave do certificado

Tipo: string Obrigatório

http.tls.client_certs.password

Senha do certificado

Tipo: string

O uso do parâmetro verify_token está obsoleto e não é recomendado. Sugerimos utilizar o parâmetro verify_token_private_key.

Requisição

curl --location '<HOST>/v1/configs' \
--header 'Content-Type: application/json' \
--header 'Authorization: <ACCESS-TOKEN>' \
--data '{
  "output": {
    "target": "http://localhost:4195",
    "type": "HTTP",
    "http": {
      "verify_token": "VERIFY-TOKEN",
      "verify_token_private_key": "my-key",
      "verb": "POST",
      "headers": {
        "Authorization": "TOKEN"
      },
      "basic_auth": {
        "user_id": "USER",
        "password": "PASSWORD"
      },
      "oauth2": {
        "client_key": "CLIENT-KEY",
        "client_secret": "CLIENT-SECRET",
        "token_url": "TOKEN-URL",
        "scopes": [
          "SCOPE"
        ],
        "endpoint_params": {
          "param1": [
            "VALUE1"
          ],
          "param2": [
            "VALUE2"
          ]
        }
      },
      "tls": {
        "enabled": true,
        "skip_cert_verify": true,
        "root_cas": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
        "enable_renegotiation": false,
        "client_certs": [
          {
            "cert": "CERT",
            "key": "KEY",
            "password": "PASSWORD"
          }
        ]
      }
    }
  }
}'

Resposta

A resposta desse endpoint será no seguinte formato:

{
  "id": "FIREHOSE-ID",
  "output": {
    "target": "http://localhost:4195",
    "type": "HTTP",
    "http": {
      "verify_token": "VERIFY-TOKEN",
      "verb": "POST",
      "headers": {
        "Authorization": "TOKEN"
      },
      "basic_auth": {
        "user_id": "USER",
        "password": "PASSWORD"
      },
      "oauth2": {
        "client_key": "CLIENT-KEY",
        "client_secret": "CLIENT-SECRET",
        "token_url": "TOKEN-URL",
        "scopes": [
          "SCOPE"
        ],
        "endpoint_params": {
          "param1": [
            "VALUE1"
          ],
          "param2": [
            "VALUE2"
          ]
        }
      },
      "tls": {
        "enabled": true,
        "skip_cert_verify": true,
        "root_cas": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
        "enable_renegotiation": false,
        "client_certs": [
          {
            "cert": "CERT",
            "key": "KEY",
            "password": "PASSWORD"
          }
        ]
      }
    }
  }
}

O campo verify_token enviado dentro do objeto http no payload da requisição pode ser utilizado para validar as mensagens recebidas pelo endpoint HTTP garantindo que as mesmas foram entregues pelo Firehose. Ele é um campo obrigatório.

Um token de verificação Firehose-Verify-Token, passado na configuração do Firehose, será adicionado no header da mensagem para a saída HTTP.

Assinatura de conteúdo

Ao utilizar o parâmetro verify_token_private_key, o Firehose assinará o conteúdo da mensagem com o algoritmo HMAC-SHA256 e adicionará dois headers na requisição: Firehose-Verify-Signature-Algorithm e Firehose-Verify-Signature-HMAC-SHA256. O último cabeçalho conterá a assinatura do conteúdo.

Caso não saiba como realizar a validação da assinatura, um exemplo pode ser encontrado nessa documentação.

Last updated