Páginas filhas
  • 5 - Login via provedor de identidade (Protocolo OIDC)



Comportamento Padrão 


       Quando o tipo de login do produto for 5 ou Login via Provedor de Identidade, a autenticação será realizada através do recebimento de um token de autorização enviado por um Provedor de Identidade externo, como por exemplo Microsoft Azure AD, Google, Apple, entre outros, sendo necessário informar login e senha que são autorizados por este provedor de identidade e ao final de uma autenticação realizada com sucesso, o Logix recebe um token de autorização que, quando identificado como um Token válido, passará a permitir acesso ao sistema Logix, considerando também as demais premissas de acesso ao produto que envolvem a situação do usuário no produto Logix (Ativo ou Bloqueado) e se possui as devidas permissões de acesso ao produto.

       Neste modo de autenticação não existe a opção para memorizar o login, atravé da opção Mantenha-me conectado apresentada na tela do menu do produto. 


Funcionalidade prevista a partir do pacote Logix 12.1.2309 ou Framework Fix 12.1.2305.fix01.

Este tipo de autenticação está disponível no produto apenas a partir do build HARPIA.



Exemplo de como o produto Logix apresenta a opção de autenticação via Provedor de Identidade, sendo neste caso o provedor Microsoft.


Ao pressionar o botão a tela acima é apresentada.

O layout dessa tela poderá mudar de acordo com o provedor de identidade configurado.






Passo a passo para disponibilizar a autenticação via provedor de identidade 


       Para que o botão de autenticação via provedor de identidade seja apresentado na tela de LOGIN do produto Logix, será preciso realizar alguns passos não apenas de configuração em telas do sistema, mas preste atenção que existe uma biblioteca LIB Java que é importante para o processo de validação do token de autorização do usuário.

       Para que um provedor de identidade seja válido para esta initegração com o Login do produto Logix, é preciso que ele permita criar uma aplicação que faça uso do protocolo OIDC (OPenID Connect). Acesse a documentação do respectivo provedor de identidade para se certificar desta funcionalidade antes de realizar o passo a passo a seguir para ativar a integração com o LOGIN do Logix.


Instalando e configurando um novo AppServer para gerenciar os tokens de autorização de usuários 


       Sugere-se que seja instalado e configurado um novo serviço de AppServer isolado para cada ambiente com base de dados LOGIX distinta, seja ambiente de Teste, Homologação ou Produção que desejar administrar a autenticação de usuários por provedor de identidade, pois o endereço de URI de Redirecionamento a ser configurado numa aplicação registrada no provedor de identidade será para identificar o AppServer de destino do envio de token de autorização de usuário, que ocorre através da requisição de API REST.

       O ideal é que este appserver seja de uso exclusivo para o processo de autenticação de usuários Logix via provedor de identidade, para garantir que outros processos concorrentes não afetem o processo de autenticação de usuários do produto.

       Não esqueça de ativar o serviço REST nesse appserver e também ative a segurança do appserver REST (HTTPS), pois a grande maioria dos provedores de identidade exige que a URI de Redirecionamento seja uma URL com protocolo HTTPS. Neste caso deverá instalar e configurar o certificado SSL no AppServer e ativar a segurança do serviço REST do Appserver.


DICA

No modelo de arquivo de configuração INI acima, será preciso ajustar os dados conforme seu ambiente e neste caso é preciso prestar atenção quanto a:

  • Número de porta dos serviços;
  • Caminho e nome do arquivo de profile;
  • HOST e PORT do License Server;
  • Caminho do RPO;
  • Nome da conexão de banco DBALIAS e tipo de banco DBDATABASE;
  • Caminho das demais pastas de chaves indicadas na seção do ambiente.

Exemplo de arquivo AppServer.ini com serviço HTTP REST ativo e segurança (HTTPS) ativa:

[logix_auth]
OUTPUTDIR=c:\totvs\logix\totvs_data
SOURCEPATH=c:\totvs\logix\apo64\
ROOTPATH=c:\totvs\logix\
STARTPATH=\totvs_data\
RPOCUSTOM=C:\totvs\logix\apo64\custom.rpo
RPODB=SQL
RegionalLanguage=BRA
RPOVERSION=120
RPOPREFIX=lgx
SCROLLCURSORSIZE=100000000
DBALIAS=logix_prd
DBDATABASE=MSSQL

[logix_auth_debug]
OUTPUTDIR=c:\totvs\logix\totvs_data
SOURCEPATH=c:\totvs\logix\apo64\
ROOTPATH=c:\totvs\logix\
STARTPATH=\totvs_data\
RPOCUSTOM=C:\totvs\logix\apo64\custom.rpo
RPODB=SQL
REGIONALLANGUAGE=BRA
RPOVERSION=120
RPOPREFIX=lgx
SCROLLCURSORSIZE=100000000
DBALIAS=logix_prd
DBDATABASE=MSSQL
FGLSQLREPLAY=1
;para ativar LOGs e TRACE de comunicacoes HTTP e REST
FWLOGMSG_DEBUG=1
FWFRAME_TRACELOG=1
FWTRACELOG=1

[Drivers]
ACTIVE=TCP
MultiProtocolPortSecure=1

[TCP]
TYPE=TCPIP
PORT=6086
SECURECONNECTION=1

[SERVICE]
NAME=TOTVSSERVER_HARPIA_HTTPS_AUTH
DISPLAYNAME=Totvs Server HARPIA_HTTPS_AUTH

[HTTP]
ENABLE=0
PORT=8095
DEFAULTPAGE=wsindex.apw
ENVIRONMENT=logix_auth

[HTTPS]
ENABLE=1
PORT=8096
ENVIRONMENT=logix_auth
INSTANCES=2,4,2,2

[SSLCONFIGURE]
SSL2 = 0
SSL3 = 1
TLS1_0 = 1
TLS1_1 = 1
TLS1_2 = 1
HSM=0
BUGS=1
STATE=1
TIMEOUT=60000
VERBOSE=0
CERTIFICATESERVER=c:\totvs\logix\sslcertificado\totvs_certificate.crt
KEYSERVER=c:\totvs\logix\sslcertificado\totvs_certificate_key.pem

[ONSTART]
REFRESHRATE=30
JOBS=HTTPJOB 

[HTTPJOB]
MAIN=HTTP_START
ENVIRONMENT=logix_auth

[HTTPV11]
ENABLE=1
SOCKETS=HTTPREST
TIMEOUT=60

[HTTPREST]
PORT=8590
URIS=URILOGIN
SECURITY=1
SSL2=0
SSL3=1
TLS1=3
TLS1_0 = 1
TLS1_1 = 1
TLS1_2 = 1
HSM=0
BUGS=1
STATE=1
VERBOSE=1
CERTIFICATE=c:\totvs\logix\sslcertificado\totvs_certificate.crt
KEY=c:\totvs\logix\sslcertificado\totvs_certificate_key.pem

[URILOGIN]
URL=/login
INSTANCES=4,10,2,4
ONSTART=LOGIXRESTSTART
ONCONNECT=LOGIXRESTCONNECT
ONEXIT=LOGIXRESTEXIT 
CORSEnable=1
ALLOWORIGIN=*

[General]
ASYNCCONSOLELOG=0
CONSOLELOGDATE=0
ECHOCONSOLELOGDATE=0
CASESENSITIVE=1
CONSOLEMAXSIZE=100000000
CONSOLE=1
LOGENABLE=1
CONSOLELOG=1
CHANGEENCODINGBEHAVIOR=1
SERVERTYPE=4GL
MAXSTRINGSIZE=300
FGLPROFILE=c:\totvs\logix\logixprofile_auth.pro
POWERSCHEMETIMEINTERVAL=43200
POWERSCHEMESHOWUPGRADESUGGESTTION=0

[LICENSECLIENT]
SERVER=<HOST_LS_SERVER>
PORT=<PORT_LS_SERVER>

[APP_MONITOR]
ENABLE=0







Registrando uma aplicação no provedor de identidade para autenticar usuários para o produto Logix


       Será preciso cadastrar uma nova aplicação no provedor de identidade utilizando para isso a configuração via OIDC (OpenID Connect) que é o padrão de protocolo utilizado para integração com o produto Logix.

       Acesse a documentação OpenID Connect disponível do seu provedor de identidade para registrar uma nova aplicação para integrar ao prouto Logix que tenha as seguintes características: 

 RESPONSE TYPE = ID_TOKEN 
 SCOPES = openid + profile + email
 REDIRECT URI = https://<host_appserver_redirect_login>:<port_rest_appserver_redirect_login><URL_BASE_REST_appserver>/api/sec/v1/oidc/authn/callback
 GRANT_TYPES = implicit + authorization_code

      É através da configuração da REDIRECT URI que o provedor de identidade saberá para qual Appserver Logix ele deverá enviar o token de cada autenticação de usuário solicitada e por isso é importante atentar para o IP e porta REST do Logix, devido a ambiente de teste e produção.

      O sufixo /api/sec/v1/oidc/authn/callback da REDIRECT URI é o endpoint fixo no Logix para atender a requisicação de REDIRECT de autenticação que irá recepcionar no LOGIX o token enviado pelo provedor de identidade.  

      Os demais dados como:      

 <host_appserver_redirect_login>
       <port_rest_appserver_redirect_login>
       <URL_BASE_REST_appserver>

Losango - ícones de formas grátis Atente para o criação da aplicação no Provedor de Identidade que deverá dar suporte ao fluxo de concessão implícita do OAuth 2.0, conforme descrito na Especificação do OAuth 2.0. A concessão implícita define que os tokens (tokens de ID ou tokens de acesso) são retornados diretamente do Authorization EndPoint (/authorize).  Além de determinar o fluxo implícito, obrigatoriamente configurar o RESPONSE_TYPE com ID_TOKEN que trata-se de um Token no formato JWT (Json Web Token) que contém informações que o Logix validará a autenticidade e obterá os dados necessários para autenticação de usuário no produto Logix.

Losango - ícones de formas grátis Configure conforme a localizacao do appserver (HOST), porta REST do appserver e ambiente URI configurado no REST do AppServer.

Losango - ícones de formas grátis Após criar a aplicação no provedor de identidade, anote o código do TENANT ID e o CLIENT ID da aplicação pois serão usados para registrar dados desta aplicação do provedor de identidade no produto Logix.


Registrando dados da aplicação do provedor de identidade no Logix


       Acesse o Cadastro de Provedores de Identidade no Logix (LOG00250), que pode ser facilmente acessado a partir do botão Cadastro de Provedores de Identidade disponível na tela do Configurador, opção Single Sign On conforme imagem ao lado:

     CONFIGURADOR - Opção Single Sign On - Configuração do Tipo de autenticação e acionar o cadastro de provedores de identidade.


       Acessando o cadastro de provedores de identidade (LOG00250) será preciso registrar um novo provedor de identidade informando os dados obrigatórios sendo que os de maior importância e que exigem os dados referentes ao provedor de identidade e a nova aplicação registrada anteriormente no provedor de identidade, são:

  • URL BASE:  Endereço URL principal de acesso ao provedor de identidade onde foi registrada a aplicação para autenticar usuários Logix;
  • CLIENT_ID:  Código CLIENT ID da aplicação registrada no provedor de identidade;
  • TENANT_ID:  Código do TENANT ID da aplicação registrada no provedor de identidade. Esta informação não é obrigatória, pois é usada apenas caso a versão do provedor de identidade instalado use a versão multi-tenant.

              Registre os dados conforme a base de dados de teste ou produção.





Configurando a ferramenta de validação de Token de autorização no Logix


       Quando o TOKEN de autorização é recebido pelo Logix, ele precisa ser validado para ser considerado válido e permitir então o acesso do usuário ao produto Logix. 
Para realizar este processo de validação do TOKEN, o Logix faz uso de uma biblioteca java chamada JWTValid.jar que é fornecida juntamente com os pacotes de atualização do ERP Logix e que deverá ser armazenada na subpasta TOOLS localizada abaixo da pasta ROOTPATH do ambiente REST do appserver que valida o recebimento do token de autenticação.     

Esta LIB java não será armazenada com as demais Libs java usadas pelo LOGIX. Ela deve ser obrigatoriamente armazenada na pasta onde atualmente existem outras ferramentas paralelas usadas pelo Logix como lpdos.exe, printer.exe, etc.


Configurando o tipo de autenticação de usuário


       Agora que a aplicação já está devidamente registrada no provedor de identidade e esta também já foi devidamente registrada no cadastro de provedores de identidade do Logix, chegou a hora de configurar o tipo de autenticação de usuário no cadastro de usuário pois os usuários do Logix podem ter um tipo de autenticação pré-definido, podendo ser ou não igual ao tipo de autenticação registrado na tela do CONFIGURADOR, que apenas indica o padrão adotado pelo sistema.

       Para que o usuário do Logix respeite a configuração do tipo de autenticação Login via Provedor de Identidade registrada na tela do CONFIGURADOR, acesse a Central de Usuários - Cadastro de Usuários (LOG05050 - Opção Usuários), e registre o tipo de autenticação do usuário como Padrão do sistema ou então Login via provedor de Identidade.


 Sugere-se que ao menos um usuário administrador do sistema tenha sua autenticação configurada com o tipo de autenticação Login interno Logix para caso ocorrer algum problema com a autenticação via provedor de identidade, seja possível acessar o sistema e configurar a autenticação para outro modelo se desejar.


PRONTO! O Logix já está configurado para realizar autenticação via OIDC (Open ID Connect).



Problemas X Soluções



Quando ocorrer algum problema na autenticação via OIDC, veja abaixo algumas dicas do que verificar e como resolver.


Falha na validação do token de autorização.

PROBLEMA: Ocorreu uma falha interna na tentativa de validar o seu acesso. Entre em contato com o Administrador. (INVALID PARAMETERS).


SOLUÇÃO:  Na geração de DEBUG FRAMEWORK avaliar no arquivo CONSOLE.LOG do AppServer o ponto onde houve a recepção e validação do Token de autorização, procurando pelos TAG [OIDC]  ou [OIDCWEBENGINE] como por exemplo:

    [OIDCWEGENGINE][Login] Received Token = <código do token> [source: OIDCWEBENGINE.PRW line: 56 function: OIDCWEBENGINE_LOGIN()]

Copie esse código de TOKEN, acesso o site https://jwt.io/ e cole o conteúdo do TOKEN no campo reservado para informar o valor de um TOKEN na área com título ENCODED, para avaliar o seu conteúdo.
Assim que o conteúdo do TOKEN é colado na área ENCODED, no lado direito é possível visualizar algumas informações na seção DECODED envolvendo dados de HEADER e PAYLOAD, onde é preciso verificar se existe informação para os campos EMAIL, NONCE, ISS, AUD, EXP.  Estes campos SÃO OBRIGATÓRIOS. Caso um deles não exista é preciso revisar todas orientações de cadastro e configuração da aplicação no provedor de identidade pois alguma configuração não foi respeitada conforme os requisitos para integrar ao Logix.


Quando a seguinte mensagem for apresentada no CONSOLE.LOG do appServer indica que existe alguma configuração incorreta na aplicação registrada no provedor de identidade.

      [OIDC][getIDTokenStatus] Informações do token não correspondem ao solicitante de origem (ISSUER, CLIENTID, NONCE)


PROBLEMA: Ocorreu uma falha na validação do seu acesso. Entre em contato com o Administrador (INVALID TOKEN)

SOLUÇÃO: Não conseguiu identificar/receber o código de token de autorização de usuário do provedor de identidade.


PROBLEMA: Sua tentativa de acesso expirou. Tente realizar novo acesso (EXPIRED TOKEN).

SOLUÇÃO: O token de autorização recebido está com o prazo de validade expirado. Neste caso será necessário realizar nova tentativa de autenticação de usuário.


PROBLEMA: Biblioteca JWTValid.jar não encontrada na pasta TOOLS do servidor. Entre em contato com o Administrador (LIB NOTFOUND).

SOLUÇÃO: Rever a instalação e configuração da biblioteca java JWTValid.jar conforme orienta no item acima "Configurando a ferramenta de validação de Token de autorização no Logix"


PROBLEMA: Tipo de acesso não autorizado para o usuário. Entre em contato com o Administrador (INVALID_USER_SIGNON_TYPE).

SOLUÇÃO: Todo usuário do Logix só pode acessar o sistema usando o modo de autenticação definido no seu cadastro. Neste caso veja no cadastro de usuário se o campo de Tipo de Autenticação está registrado como "Login via provedor de identidade" ou "Padrão do sistema", sendo este último válido somente quando no CONFIGURADOR na seção "Single Sign On" estiver registrado como "Login via provedor de Identidade". Somente com esta configuração o usuário acessará o sistema via Provedor de Identidade.