{ "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); ListLcol_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.