# Autenticação em AvaTax Brasil

Source: https://developer.avalara.com/merchandise-calculation-pt/autenticacao/como_autenticar_a_conta_avatax/

Nesta sessão, você verá todas as etapas necessárias para criar um token e como autenticá-lo em nossa API.

A Autenticação funciona pelo método OAuth 2.0, o que significa que será recebido um token de acesso para permitir o acesso à aplicação para cada chamada com as credenciais obtidas.

Este “Access Token” tem um período específico, sendo necessário enviar novamente as credenciais para obter novo acesso, uma vez expirado.

**Atenção:** É possivel renovar o "`Token de Acesso`" ou enviar as credenciais a cada nova chamada, mas a segunda forma geralmente é indicada apenas em casos de ambiente inseguro, como GUIs.

**ETAPA 1: Como criar um token de acesso de API através do Portal Avalara:**

TAREFA

RESULTADO

\*Todo o processo para criar o token e as credenciais necessárias para acessar um token de acesso são feitos através do Portal Avalara.

Acesse o portal: URL: [https://portal.sandbox.avalarabrasil.com.br/Login](https://portal.sandbox.avalarabrasil.com.br/Login)

Acesse o Portal Avalara https://portal.sandbox.avalarabrasil.com.br/Login

Clique em `configurações`, e depois em `tokens de assinatura`.

Uma mensagem aparece com a opção `+ novo token de assinatura`

Selecione a opção `+ novo token de assinatura`.

Uma caixa com `informações básicas` para a assinatura se abre.

Um novo token é gerado:

1.  Escolha um nome no campo (`nome`).

2.  Selecione uma data de início no campo`(Data início DD/MM/AAAA)`.

3.  Selecione uma data final no campo`(Data fim DD/MM/AAAA)`.

4.  PressioneSalvar.

`Gera um novo token!`

Uma nova janela se abre com as informações do token `(informações do token)`.

-   No campo `(assinatura)`, o valor que deve ser enviado na tag "`client_id`" aparece.

-   No campo `(segredo do token)`, o valor que deve ser colocado na tag "`client_secret`" aparece.

Atenção:Certifique-se de salvar o token em um local seguro antes de concluir o processo. Não será possível referir-se a ele novamente.

1.  Pressione the `(sim, guardei o segredo do token em segurança)`

2.  Clique em (`fechar`).

`Os valores do token de assinatura e token secreto aparecem.`

**Atenção:** Seguindo as melhores práticas recomendadas, sugerimos que cada aplicativo conectado à nossa solução use um `token de autenticação` separado.

**ETAPA 2: Como obter um token de acesso?**

Agora que você criou com sucesso as credenciais necessárias dentro de nosso Portal, você só precisa chamar nossa API e obter um token de acesso.

Campos Obrigatórios/ Sugeridos

Atributos

Descrição

Obrigatório

grant\_type

Para solicitar um “`Access Token`”, inicial, você deve enviar o valor de “`client_credentials`”.

Obrigatório

client\_id

Este é um valor equivalente a “`subscription ID`”.

Obrigatório

client\_secret

O token único (`secret`) fornecido durante a criação do token no Portal Avalara.

Sugerido

disableTokenRefresh

Esta propriedade indica se o solicitante da sessão deseja ou não obter o “`RefreshToken`” para renovar a sessão a cada “X” minutos.

Caso o solicitante opte por manter a sessão ativa até o vencimento em “X” horas, sem renovação periódica, deverá ser enviado um valor fixo como “`true`” e o “`RefreshToken`” **NÃO SERÁ RECEBIDO.**

**Atenção: se esta propriedade for enviada na requisição inicial como "`false`", a etapa de atualização do token deve ser executada.**

**Request Model:**

POST: [https://api-gateway.sandbox.avalarabrasil.com.br/oauth/oauth/token](https://api-gateway.sandbox.avalarabrasil.com.br/oauth/oauth/token)

```
 {            "grant_type": "client_credentials",            "client_id": "",            "client_secret": "",            "disableTokenRefresh": true            } 
```

**Atenção:** Este processo deve ser repetido até que a sessão expire. As informações de expiração podem ser verificadas na tag de resposta do corpo denominada: "`expires_in_session`", e assim que expiradas, deve-se reiniciar o processo desde o início.

**Refresh token**

Como mencionado, uma vez informado o atributo `"disableTokenRefresh"=false`, deve-se armazenar o valor do `"refresh_token"` recebido no retorno da solicitação inicial, para posteriormente utilizar o valor armazenado para uma nova solicitação de token de assinatura, sem a necessidade de enviar as credenciais novamente.

Veja abaixo um exemplo de como enviar a sessão `refresh_token`:

POST: [https://api-gateway.sandbox.avalarabrasil.com.br/oauth/oauth/token](https://api-gateway.sandbox.avalarabrasil.com.br/oauth/oauth/token)