O controle de licença por demanda é uma solução desenvolvida para os aplicativos cadastrados no Mingle, que permite o serviço REST do backend consumir licenças somente quando uma API está em execução, ao invés de manter o consumo permanente de uma licença para cada Working Thread em funcionamento no REST.
No cadastro de aplicativos do Portal Mingle, temos a aba Controle de Licenças:
Caso queira realizar o controle de licenciamento, informe o seu código de licença para um administrador.
Este campo não é obrigatório, caso o código de licença não for preenchido o backend está preparado para consumir a licença padrão.
Por exemplo, no Protheus, a licença padrão é a TOTVS I que é um tipo de licença utilizado para licenciar o Pool de conexões de Web Services, que atendem customizações e/ou funcionalidades do produto como Portais e aplicativos. A natureza de controle desta licença é concorrente.
Saiba mais sobre a gestão de licenças no Protheus aqui: https://tdn.totvs.com/pages/viewpage.action?pageId=527852596
Ao realizar qualquer tipo de integração com o backend, seja autenticação ou requests rest no gateway, o Mingle realiza uma consulta no cadastro do aplicativo em uso.
Caso o aplicativo possua o código de licença informado, antes de enviar a requisição ao backend, este código é encapsulado em um JWT onde o issuer deve ser sempre "mingle/totvs".
Este JWT é assinado com uma chave privada.
No momento da integração, independente do método (GET, POST, PUT ou DELETE) o JWT é enviado no header "x-totvs-appcode".
Diagrama: Login do aplicativo.
Diagrama: Requisições REST para do aplicativo para o backend
Conforme mencionado no tópico anterior, para a segurança da informação, o JWT contendo o código de licença é assinado com uma chave privada.
Para o backend verificar se o JWT recebido foi criado pelo MIngle, é necessário ter a chave pública criptografada no formato PEM. Tal chave é obtida através do endpoint:
https://mingle.totvs.com.br/api/api/v1/services/certificate
Para mais informações:
http://mingle.totvs.com.br/api/docs/#api-Certificate-getCertificate
<style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } </style> |