01. DADOS GERAIS

Produto:

Linha de Produto:

Segmento:

Módulo:Checklist
Função:Autenticação e Integração
Ticket:
Requisito/Story/Issue (informe o requisito relacionado) :
  1. DLOGPORTOS-22473


02. SITUAÇÃO/REQUISITO

Para atender à necessidade de integração entre o ecossistema TOTVS Logística Recintos Aduaneiros e o produto Checklist da Suíte Logística, fez-se necessária a criação de uma API Gateway que intermediará as requisições.

03. SOLUÇÃO

Para a integração, foi desenvolvida uma API RESTful que intermedia a comunicação entre o ecossistema e outras APIs RESTful. Esta intermediação pode ser feita com ou sem tradução da requisição em um modelo ou protocolo diverso do protocolo HTTP/1.1, desde que devidamente implementada.

A implementação destas integrações e traduções se dará por meio de classes implementadas e adicionadas ao módulo Apache resultante da compilação, baseadas na interface IGatewayBase, disponível internamente no projeto.

A API será responsável, quando necessário, pela autenticação na API destino, reservando seu token em cache para futuras chamadas até sua expiração. Uma vez expirado, o token é eliminado, sendo necessário obter um novo.

As definições, bem como as opções de implantação, podem ser vistas abaixo:

São interfaces disponibilizadas na aplicação para uso na expansão das integrações:

A interface IStrategyAuthenticator define as formas de autenticação que poderão ser usadas pela integração.

  • function SetAuthURL(const AValue: string): IStrategyAuthenticator;

  • function SetParam(const AName, AValue: string): IStrategyAuthenticator;

  • function SetParams(const AValue: TStrings): IStrategyAuthenticator;

  • function Authenticate(out AToken: string): THTTPCode;

  • ExpiresIn: Cardinal;
  • TokenType: string;

A interface IStrategyAuthContainer define o contêiner de armazenamento das definições de classes baseadas na interface IStrategyAuthenticator.

  • function AddAuthenticator(const AName: string; const AAuthenticator: TStrategyAuthenticatorClass): IStrategyAuthContainer;
  • function RemoveAuthenticator(const AName: string): IStrategyAuthContainer;
  • function Clear: IStrategyAuthContainer;
  • function SelectAuthenticator(const AName: string): IStrategyAuthContainer;
  • function SetAuthURL(const AValue: string): IStrategyAuthContainer;
  • function SetParam(const AName, AValue: string): IStrategyAuthContainer;
  • function Authenticate(out AToken: string): THTTPCode;
  • Authenticator[const AName: string]: IStrategyAuthenticator;
  • Authenticators: TArray<string>;

A interface IGatewayBase define as classes de integração que podem ser agregadas à API.

  • function SetAuthenticator(const AAuthenticator: IStrategyAuthenticator): IGatewayBase;
  • function SetRedisConnector(const AValue: IRedisConnector): IGatewayBase;
  • function TreatRequest(const ARequest: TWebRequest; const AResponse: TWebResponse; const APathInfo: TArray<string>): THTTPCode;

Não há propriedades expostas.

 A interface IGatewayFactory define a estrutura que armazena as definições das classes baseadas na interface IGatewayBase.

  • function GetResource(const AKey: string): IGatewayBase;
  • function RegisterResource(const AKey: string; const AResource: TGatewayBaseClass): IGatewayFactory;
  • function Resources: TArray<string>;

Não há propriedades expostas.

Este é o fluxo básico de operação das classes agregadas à API Gateway .

São opções de deploy da API Gateway:

A compilação pode ser feita para as seguintes arquiteturas:

  • 32 bits (obsoleta)
  • 64 bits

E deve obedecer a configuração Release.

As linhas a seguir devem ser adicionadas ao arquivo httpd.conf.

LoadModule cesgw_module modules/mod_cesgw.so

<IfModule cesgw_module>
  <Location /api/tlra/cesgw/v1>
    SetHandler mod_cesgw-handler
  </Location>
</IfModule>




04. DEMAIS INFORMAÇÕES

Outras ações/ações relacionadas 

Para maiores informações acerca do protocolo OAuth2, o artigo disponível aqui traz informações mais abrangentes sobre o assunto.

05. ASSUNTOS RELACIONADOS