01. Seção SSLCONFIGURE
- Durante a configuração do dessa tag em seu 'appserver.ini' observe as validações do seu certificado e quais são os níveis de criptografia que permite a utilização.
- Após estar tudo funcionando é indicado desabilitar o 'verbose' para evitar a atualização/gravação de mensagens informativas em seu 'console.log' o que afeta bastante a performance do server.
- Informe seu certificado e chave privada do seu certificado de acordo com as informações abaixo e também detalhadas no caso de uso do tópico anterior.
- É importante habilitar também as palavras reservadas 'SSL' pois sem estarem habilitadas as APIs REST não responderam, pois o modelo de a criptografia utilizada será automaticamente configurada entre browsers e server baseado no certificado utilizado e versões de browsers, assim como também não podem existir gaps entre os modelos, por exemplo, não é permitido colocar SSL2=1 ; SSL3=0; TLS1=1.
- Não deixe de informar a 'PassPhrase', ou palavra/frase passe, pois ela é sua segurança para inibir acesso as informações de seu certificado utilizando função da Tech, como por exemplo a função PEMInfo()
[SSLConfigure]
Enable=1
SSL2=1
SSL3=1
TLS1=1
TLS1_0=1
TLS1_1=1
TLS1_2=1
verbose=0
CertificateServer=c:\totvs\certificate.crt
KeyServer=c:\totvs\private.key
PassPhrase=meurhpwd
02. Sobre Configuração do REST
Referente a configurações básicas para o serviço REST já foram comentadas no processo de instalação, sendo assim, vamos compartilhar outras informações relevantes sobre esse serviço que podem estar ligadas a sua infra-estrutura e a arquitetura do App MeuRH.
- Inicialmente é importante ressaltar que problemas encontrados no certificado, como por exemplo, carregar em ambiente 'não seguro' NÃO funcionará o processo de login no aplicativo pelo celular visto restrições de segurança, mesmo que o funcionamento ocorra normalmente pelo browser, pois temos a possibilidade de permitir a habilitação do carregamento de urls não seguras.
- Diferente de serviços HTTP, para os serviços REST não temos a possibilidade de escolher o endereço da URL, sendo assim os serviços inicializados no servidor responderá aos IPs disponíveis no mesmo.
- Provavelmente o seu serviço de APIs REST estará instalado em um servidor que responda a um IP Externo, consequentemente não faz sentido subir uma porta do REST que não possua o seu certificado SSL:
- Caso deseje configurar uma API apenas com HTTP indicamos subir e utilizar um appserver apenas em um servidor físico em sua rede local.
- Ao utilizar o SSL verifique as características do seu certificado baseado nas informações dos tópicos anteriores.
- A palavra 'URL' dentro da tag [HTTPENV] deverá possuir inicialmente a palavra 'rest' é obrigatória para a utilização da arquitetura do App MeuRH, principalmente quando utilizada pelo celular:
- Após a palavra 'rest' você poderá possuir quaisquer nomes para compor a sua URL de APIs, em nosso caso de uso nossa URL ficaria como https://104.210.222.191:8107/restT1
- Entretanto, por nosso certificado criado não estar habilitado para esse IP público estaremos utilizando o serviço REST sem ssl para esse ambiente, respondendo em http://104.210.222.191:8107/rest
- Sendo assim, apenas foi retirado as informações referente ao certificado da tag [HTTPREST].
- Referente a seção [RESTCONFIG], ela é criada exclusivamente para utilização da arquitetura do App MeuRH:
- A palavra 'restPort' é utilizada pelos serviços de backend por isso a obrigatoriedade do seu preenchimento, sendo assim, apesar do protheus em seu appserver permitir que se possa instanciar várias portas REST, em virtude da arquitetura do meurh esse contexto não é permitido.
- Em relação a palavra reservada 'MeuRHLog' ela auxilia no processo de login e manutenção para identificar possíveis dificuldades no processo de configuração e divergências de login, posteriormente, também pode ser desligada utilizando o valor '0' para melhorar a performance de resposta do aplicativo.
- Não deixe de confirmar se a porta do serviço REST utilizada está liberada em seu firewall para permitir receber as requisições.
- Não deixe também de habilitar o item 'SECURITY', pois ele é responsável em exigir as autenticações para a utilização das API´s, caso não estejam ligados o server responderá qualquer requisição recebida sem validação.
[HTTPV11]
ENABLE=1
Sockets=HTTPREST
[HTTPREST]
Port=8107
SECURITY=1
URIs=HTTPENV
SSL2=1
SSL3=1
TLS1=1
TLS1_0=1
TLS1_1=1
TLS1_2=1
verbose=0
CertificateServer=c:\totvs\certificate.crt
KeyServer=c:\totvs\private.key
PassPhrase=meurhpwd
[HTTPENV]
URL=/rest
PrepareIn=T1
Instances=2,1
ENVIRONMENT=12.1.27
Public=fwjwt/refresh_token,auth
CORSEnable=1
AllowOrigin=*
[HTTPJOB]
MAIN=HTTP_START
ENVIRONMENT=12.1.27
[ONSTART]
JOBS=HTTPJOB
[RESTCONFIG]
restPort=8107
MeuRHLog=1
03. Sobre Configuração da Seção HTTP
Em relação as configurações de hosts HTTP no seu 'appserver.ini', essas informações abaixo são importantes e complementares ao processo de instalação:
- É obrigatório a informação da tag mesmo que você deseje utilizar apenas utilizar o serviço HTTPs, entretanto, você desabilitar com 'enable=0' para que nenhuma requisição seja respondida por qualquer host configurado.
- Por padrão web e também do server protheus é importante relembrar que por padrão utilizando o protocolo HTTP a porta padrão é 80, enquanto utilizando HTTPs a porta padrão é 443.
- A utilização de portas diferentes irá obriga-lo a configura-las nos hosts, veja no próximo tópico.
- Lembre-se de liberar as portas utilizadas em seus serviços de firewall em seu servidor.
- Procure utilizar a palavra reservada 'compression', essa funcionalidade realiza automaticamente no server uma compressão gzip nos arquivos que serão enviados e os browsers já fazem essa descompactação do arquivos, assim os processos de transferência/download e inicialização ficam mais rápidos.
- Caso realizem alguma configuração para esconder URLs quando a utilização ocorrer via browsers através de iframe é necessário configurar e informar a palavra reservada 'xFrameOptions'.
[HTTP]
ENABLE=0
PATH=C:\Protheus_12127\Protheus_data\web
PORT=80
ENVIRONMENT=12.1.27
XFrameOptions = ALLOW-FROM http://meurh.world
Compression=1
[HTTPS]
ENABLE=1
PATH=C:\Protheus_12127\Protheus_data\web
PORT=443
ENVIRONMENT=12.1.27
XFrameOptions = ALLOW-FROM http://meurh.world
Compression=1
VERBOSE=1
SSL2=1
SSL3=1
TLS1=1
TLS1_0=1
TLS1_1=1
TLS1_2=1
CertificateServer=C:\Protheus_12127\bin\appserver\meurh_certificate.crt
KeyServer=C:\Protheus_12127\bin\appserver\meurh_private.key
PassPhrase=2020MeuRH#pwd
04. Sobre Configuração de Hosts/Seções HTTP
- Os Hosts são as suas URLs disponíveis que são responsáveis em trafegar as seus arquivos clients declarados na palavra passe 'path', sendo assim para cada URL será necessário uma declaração em seu 'appserver.ini'.
- Em relação a utilização e declaração de uma URL como host é necessário realizar a publicação desse subdomínio com seu respectivo IP Externo nos servidores DNS, no provedor de internet caso não possua um servidor de publico na sua empresa. Do contrario será possível acessar diretamente pelo browser apenas o seu endereço IP Externo
- Sobre a utilização de outras portas para HTTP, além das portas padrões comentadas no item anterior desse documento, será necessário inclui-las na composição do seu host, exemplo:
- Caso tenha declarado que a porta do seu HTTP será 8080 ou HTTPs como 8433.
- Precisará configurar a respectiva porta em seu host, ficando [104.210.222.191:8080] ou [104.210.222.191:8433]
- Consequente em seu browser deverá ser acessado http://104.210.222.191:8080 ou https://104.210.222.191:8433
- Outra informação relevante é que caso tenha caso tenha informado algum identificador posteriormente ao nome da URL Rest configurada, em virtude da arquitetura de utilização via aplicativo no celular será necessário incluir esse complemento na declaração do seu host, exemplo:
- Supondo que tenha informado na sua configuração do REST 'URL=/restT1'
- A sufixo T1 deverá estar composto na declaração de sua URL [104.210.222.191/T1] , sendo assim o seu acesso deverá ser feito pelo browser como https://104.210.222.191/T1
[portal.meurh.world]
ENABLE=1
PATH=C:\Protheus_12127\Protheus_data\web\PortalMeuRH
DEFAULTPAGE=index.html
[104.210.222.191]
ENABLE=1
PATH=C:\Protheus_12127\Protheus_data\web\PortalMeuRH
DEFAULTPAGE=index.html
05. Sobre Utilização e Configuração de Multi-Empresas
- Quando estamos falando de multi-empresas ou grupo de empresas separadas falamos sobre dicionarios separados, por exemplo SX2T10 e SX2T20, para esses casos nossa indicação inicial é utilizar um appserver para cada empresa, podendo ser no mesmo servidor, isso facilita algum tipo de manutenção e controle se necessário.
- Por exemplo, é possível configurar um appserver apenas com as seção do REST sem a seção HTTP que poderá estar localizado em outro appserver servindo as mesma porta. Enfim são muitas possibilidades de configuração, mas algumas podem sofrer restrições em virtude da arquitetura de conexão do aplicativo.
- Modelos diferenciados de configuração necessitam uma revisão do arquivo 'properties.json' e da geração do QRCode para conexão.
- Em relação ao serviço REST, em virtude da arquitetura do aplicativo, não poderemos utilizar a palavra reservada "prepareIn=ALL".
- Apesar do serviço ter a possibilidade de subir threads utilizando essa opção, o processo de autenticação do backend exige URLs Rest separadas, pois em alguns casos sua requisição pode cair no server em uma thread de outra empresa, pois no momento da requisição não existe a identificação do Tenent que deseja acessar.
Todavia é possível configurar empresas simultaneamente no mesmo appserver, então abaixo indicaremos como é possível indicar essa informações:
- Inicialmente você deve configurar duas seções de environment (URIs) para as APIs Rest, uma para cada empresa, de acordo com o exemplo abaixo:
- Pode-se utilizar a mesma porta REST para os dois ambientes, no caso port=8107.
- Observe q temos as URLs /restT1 & /restT2, consequentemente serão responderão como http://104.210.222.191:8107/restT1 & http://104.210.222.191:8107/restT2
[HTTPV11]
ENABLE=1
Sockets=HTTPREST
[HTTPREST]
Port=8107
SECURITY=1
URIs=HTTPENVT1,HTTPENVT2
[HTTPENVT1]
URL=/restT1
PrepareIn=T1
Instances=2,5,1,1
Public=fwjwt/refresh_token,auth
CORSEnable=1
AllowOrigin=*
[HTTPENVT2]
URL=/restT2
PrepareIn=T2
Instances=2,5,1,1
Public=fwjwt/refresh_token,auth
CORSEnable=1
AllowOrigin=*
- Posteriormente necessitamos atualizar as seções/hosts com as URLs HTTP:
- Referente a configuração dessas seções podemos encontrar mais detalhes no item anterior 4 desse documento.
- Para esse caso devemos atualizar o host,complementando com o sufixo informado após a palavra 'rest' contido na tag URL=/restT1 para cada empresa definida.
- Outra informação importante é a necessidade de duplicar a pasta criada no PATH, em virtude das alterações a serem feitas no arquivo 'properties.json'
- Esse contexto de configuração implica na necessidade de geração de QRCodes separados para cada empresa, temos um exemplo no próximo tópico.
- Como exemplo, a URL desse QrCode ficaria https://11.222.33.44/T1/?restPort=8103
[104.210.222.191/T1]
ENABLE=1
PATH=C:\Protheus_12127\Protheus_data\web\PortalMeuRHT1
DEFAULTPAGE=index.html
[104.210.222.191/T2]
ENABLE=1
PATH=C:\Protheus_12127\Protheus_data\web\PortalMeuRHT2
DEFAULTPAGE=index.html
06. Sobre Configuração do Properties.json
O configuração do arquivo 'properties.json', que se localiza dentro da pasta informada em seu host/url, é fundamental para a correta conexão aos serviços de sua API Rest, eventualmente pode acontecer de funcionar corretamente o acesso pelo browser, todavia a tentativa de conexão/login quando utilizada pelo celular não funciona adequadamente.
Diferentes modelos de configuração podem influenciar diretamente em como esse arquivo será composto, basicamente nesse json temos dois campos a serem preenchidos 'baseUrl' & 'rootContext', sendo assim abaixo teremos algumas opções para a elaboração desse arquivo.
- Para modelos de configuração sem SSL e sem complemento para o endereço do serviço Rest ( URL=/rest ), teremos as seguintes informações:
- "baseUrl": "http://11.222.33.44:8081/restT1",
- "rootContext": "/T1/"
- Para modelos de configuração sem SSL e sem complemento para o endereço do serviço Rest ( URL=/rest ), teremos as seguintes informações:
- Para modelos de configuração sem SSL e sem complemento para o endereço do serviço Rest ( URL=/rest ), teremos as seguintes informações:
- Para modelos de configuração sem SSL e sem complemento para o endereço do serviço Rest ( URL=/rest ), teremos as seguintes informações:
- Para modelos de configuração sem SSL e sem complemento para o endereço do serviço Rest ( URL=/rest ), teremos as seguintes informações: