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) : | - 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