> For the complete documentation index, see [llms.txt](https://help.blazon.im/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.blazon.im/guias/casos-de-uso/provedores-sms/envio-de-sms-com-falha-de-autenticacao-e-ou-autorizacao.md).

# Envio de SMS com falha de autenticação e/ou autorização

Nesse caso de uso o envio do SMS é feito e espera-se para cada requisição HTTP um retorno 200 OK como sucesso do envio, porém uma falha de autenticação e/ou uma falha de autorização acontecem.

### Público alvo deste caso de uso

Analista de IAM, ou qualquer outro profissional que será responsável pela administração do Blazon.

### Objetivo

Esse cenário tem como objetivo descrever como realizar as **configurações adequadas** do provedor de SMS de forma a capturar o comportamento de falha de envio por falha de **autenticação** e/ou **autorização**.

### Descrição

No ambiente de execução deste cenário, ocorrem alguns erros de envios de SMS para alguns provedores devido à falhas de autenticação e/ou autorização.

No entanto esses SMS que são dados como falhas genéricas de envio, estão sem o tratamento correto do problema por não existir a configuração dos retornos para esses casos específicos. &#x20;

Com as configurações de retornos corretas pode-se discriminar as falhas de envios pos falhas de autenticação e/ou autorização.

## Requisição

Essa seção apresenta na tabela abaixo as definições relacionadas à requisição HTTP para o envio do SMS usando uma API externa.

<table><thead><tr><th width="240">Item</th><th>Valor</th></tr></thead><tbody><tr><td>Método HTTP</td><td>POST</td></tr><tr><td>URL</td><td><pre><code>https://sms.services/api/send-sms.php
</code></pre></td></tr><tr><td>Segurança</td><td>Autenticação HTTP básica</td></tr><tr><td>Cabeçalhos</td><td><ul><li>Accept: application/json</li><li>Content-Type: application/json</li></ul></td></tr><tr><td>Body</td><td><pre><code>{
  "telefone": "34---------",
  "mensagem": "Token de autenticação Blazon: 154567"
}
</code></pre></td></tr></tbody></table>

Com as configurações acima a API envia um SMS para o **telefone** descrito no JSON do *body*, contendo a **mensagem** definida juntamente com o **token** de acesso.

## Resposta

Essa seção apresenta as configurações das respostas HTTP esperadas tanto de sucesso como as de falha de autenticação e a de falha de autorização.

### Resposta de envio da API de SMS

A tabela abaixo descreve as informações de retorno da API de SMS quando o envio ocorre com sucesso.

<table><thead><tr><th width="304">Item</th><th>Descrição</th></tr></thead><tbody><tr><td>HTTP STATUS</td><td>200 OK</td></tr><tr><td>Body</td><td><pre class="language-json"><code class="lang-json">{
    "status": "SUCESSO"
}
</code></pre></td></tr><tr><td>Response-type</td><td>application/json</td></tr></tbody></table>

### Resposta de falha de autenticação

A tabela abaixo descreve as informações de retorno da API de envio quando ocorre uma falha de autenticação. De acordo com a documentação o código de HTTP 401 descreve uma tentativa de acesso não autenticado.

<table><thead><tr><th width="304">Item</th><th>Descrição</th></tr></thead><tbody><tr><td>HTTP STATUS</td><td>401 Unauthorized</td></tr><tr><td>Body</td><td><pre class="language-json"><code class="lang-json">{
    "status": "NÃO AUTENTICADO"
}
</code></pre></td></tr><tr><td>Response-type</td><td>application/json</td></tr></tbody></table>

### Resposta de falha de autorização

A tabela abaixo descreve as informações de retorno da API de envio quando ocorre uma falha de autorização. De acordo com a documentação o código de HTTP 403 descreve uma tentativa de acesso não autorizado.

<table><thead><tr><th width="304">Item</th><th>Descrição</th></tr></thead><tbody><tr><td>HTTP STATUS</td><td>403 Forbidden</td></tr><tr><td>Body</td><td><pre class="language-json"><code class="lang-json">{
    "status": "NÃO AUTORIZADO"
}
</code></pre></td></tr><tr><td>Response-type</td><td>application/json</td></tr></tbody></table>

Qualquer retorno diferente dessas 3 possibilidades deverá ser considerado FALHA genérica.

## Configurações

As configurações descritas nessa seção são referenciadas na documentação do **Administrador** na página [Configurando um provedor de SMS](https://docs.blazon.im/administrador/mais-opcoes/configuracoes-gerais/sms#configurando-um-provedor-sms).&#x20;

### Configurações da Requisição

Todas as configurações são realizadas no detalhamento do provedor na aba **Configurações**:

* O método HTTP e URL são definidos no topo do card da aba de **Configurações**;
* A configuração de Segurança é feita na aba **Segurança** selecionando o tipo "Autenticação HTTP Básica";
* A configuração dos cabeçalhos é feita na aba **Cabeçalhos**, adicionando-se os dois cabeçalhos descritos;
* A configuração do Body é feita na aba **Body**, configurando o *media-type* **application/json** e com o conteúdo:
  * ```
    {
      "telefone": "${[to]}",
      "mensagem": "Token de autenticação Blazon: ${[token]}"
    }
    ```

### Configuração dos Retornos

A configuração dos retornos, feito na aba **Retornos**, deve evidenciar quando o retorno é um 200 OK com sucesso no envio. Além disso deve evidenciar as falhas de envios por erros de autenticação e/ou autorização.

Dado o cenário e o fato de que os retornos são avaliados na ordem, sugere-se a seguinte configuração dos **Retornos**:

<table><thead><tr><th width="271">Retorno</th><th>Descrição</th></tr></thead><tbody><tr><td>Retorno de falha de autenticação</td><td>retorno quando o código HTTP é 401. Será considerado como FALHA de autenticaçã.</td></tr><tr><td>Retorno de falha de autorização</td><td>retorno quando o código HTTP é 403. Será considerado como FALHA de autorização.</td></tr><tr><td>Retorno da API de SMS</td><td>retorno quando o código HTTP é 200 e não cai no retorno anterior. Será considerado como SUCESSO.</td></tr><tr><td>Retorno padrão</td><td>retorno diferente do que está definido nos retornos anteriores. Será considerado como FALHA.</td></tr></tbody></table>

Analisando os retornos acima, observa-se que qualquer retorno 401 que voltar pro Blazon, será definido como FALHA de autenticação.&#x20;

Qualquer retorno 403 que voltar pro Blazon, será definido como FALHA de autorização.&#x20;

Caso o retorno seja 200 OK vai casar com a definição do retorno de envio da API e será definido como SUCESSO.&#x20;

Qualquer coisa diferente disso vai cair no retorno padrão que será considerado como FALHA.&#x20;

As configurações dos retornos descritos, na tabela acima, estão detalhadas abaixo:

#### Retorno de falha de autenticação

Como esse retorno tem que validar apenas o código HTTP 401 sugere-se a configuração usando o tipo **Código HTTP** que é mais simples e direta.

<table><thead><tr><th width="215">Campo</th><th>Valor</th></tr></thead><tbody><tr><td>Tipo</td><td>Código HTTP</td></tr><tr><td>Valor</td><td>401</td></tr><tr><td>Status</td><td>Falha</td></tr><tr><td>Situação</td><td>Falha de autenticação</td></tr></tbody></table>

Observa-se que a configuração verifica apenas o código de retorno, se ele é 401 será detectado como FALHA de autenticação.

#### Retorno de falha de autorização

Como esse retorno tem que validar apenas o código HTTP 403 sugere-se a configuração usando o tipo **Código HTTP** que é mais simples e direta.

<table><thead><tr><th width="215">Campo</th><th>Valor</th></tr></thead><tbody><tr><td>Tipo</td><td>Código HTTP</td></tr><tr><td>Valor</td><td>403</td></tr><tr><td>Status</td><td>Falha</td></tr><tr><td>Situação</td><td>Falha de autorização</td></tr></tbody></table>

Observa-se que a configuração verifica apenas o código de retorno, se ele é 403 será detectado como FALHA de autorização.

#### Retorno da API de SMS

Como esse retorno tem que validar apenas o código HTTP 200 sugere-se a configuração usando o tipo **Código HTTP** que é mais simples e direta.

<table><thead><tr><th width="215">Campo</th><th>Valor</th></tr></thead><tbody><tr><td>Tipo</td><td>Código HTTP</td></tr><tr><td>Valor</td><td>200</td></tr><tr><td>Status</td><td>Sucesso</td></tr><tr><td>Situação</td><td>Sucesso no envio</td></tr></tbody></table>

Observa-se que a configuração verifica apenas o código de retorno, se ele é 200 será detectado como SUCESSO no envio

{% hint style="info" %}

#### Nota

A configuração do retorno padrão é intuitiva e basta definir o **status** como **Falha** e definir a **situação** como **Falha no envio do SMS**. &#x20;

Nesse caso qualquer coisa que retornar diferente do que foi configurado nos retornos anteriores será dado como FALHA.
{% endhint %}
