{
"autenticacao":
{
"tokenJWT": "",;
"cnpj": "",
"token": ""
},
"parametros":
{
...
}
}
O grupo autenticação autenticacao é responsável pelos dados de quem está efetuando a requisição ao serviço, sendo necessário a informação: tokenJWT ou cnpj e token.
Desta forma, é possível realizar a comunicação com a API de uma forma mais segura, utilizando um tokenJWT ou uma maneira mais simples, informando os dados do requisitente cnpj e token.
Você decide qual se aplica melhor no seu dia a dia!
Para gerar o Token JWT é necessário:
No grupo de Claim "Reinvidicações" deverá ser utilizado:
"iat" : "{DATA DE CRIAÇÃO}"
"cnpj" : "{CNPJ DA EMPRESA}"
"exp" : "{DATA DE EXPIRAÇÃO DO TOKEN}"
* DATA DE CRIAÇÃO e DATA DE EXPIRAÇÃO DO TOKEN no formato Numeric Date
* CNPJ no formato numérico, sem máscaras e com 14 dígitos.
A chave de segurança será o Token individual da empresa. Ela é única e servirá para gerar a assinatura do conteúdo do tokenJWT.
E por último a expiração do token, será uma data definida pelo próprio consumidor da API, da maneira que achar mais utilizável em sua aplicação.
HEADER:
{
"alg": "HS512",
"typ": "JWT"
}
PAYLOAD:
{
"iat": "1601471278",
"cnpj": "12345678912345",
"exp": "1601474878"
}
var Lobj_SSK = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(TOKEN_DA_EMPRESA));
var Lobj_Chave = new SigningCredentials(Lobj_SSK, SecurityAlgorithms.HmacSha512);
List Lcol_Claims = new List()
{
new Claim(JwtRegisteredClaimNames.Iat, Convert.ToInt32(
Math.Truncate(
DateTime.Now.ToUniversalTime().Subtract(
new DateTime(1970, 1, 1, 0, 0, 0,DateTimeKind.Utc)
).TotalSeconds)
).ToString()),
new Claim("cnpj",CNPJ_DA_EMPRESA)
};
var secToken = new JwtSecurityToken(
signingCredentials: Lobj_Chave,
claims: Lcol_Claims,
//Expira em uma hora
expires: DateTime.UtcNow.AddSeconds(60 * 60));
var Lobj_JWTH = new JwtSecurityTokenHandler();
string Lstr_TokenJWT = Lobj_JWTH.WriteToken(secToken);
No site https://jwt.io podem ser obtidas mais informações, pode-se efetuar testes nos tokens e existem bibliotecas prontas para uso em diversas linguagens de programação.
Caso ainda assim persistam dúvidas, entrem em contato com nossa equipe.