Problema Inicial
Desenvolvemos para um Parceiro uma solução integrada baseada nos Softwares Livres SuiteCRM , Alfresco e Pentaho que permite suporte a gestão de relacionamento com agências, Gestão de Conteúdo empresarial e Business Intelligence integrados numa única aplicação chamado, e precisávamos que ao fazer login todos as aplicações fossem autenticadas juntamente para podemos usar “partes” de cada uma das aplicações para cada funcionalidade
Solução de Autenticação Múltipla
Usamos um único formulário de Login ( montamos em html puro ) para receber os dados de login e senha usar o mesmo POST enviado pelo submit para fazer o POST em todos os demais ( SuiteCRM, Pentaho e Alfresco ) softwares simultaneamente , com isso ao navegar entre as soluções o usuário não percebia que estava em diversos softwares.
Obs – Ao Cadatrar usuário os usuarios e senhas devem ser idênticos em ambos o sistemas , ou usar ambos integrados a o OpenLDAP/AD.
Index.html ( multi post )
O arquivo index.html foi adicionado na pasta raiz do SuiteCRM para que o mesmo seja carregado antes do index.php nativo e com isso usamos ele como tela de login , no exemplo abaixo pode ver o fonte do arquivo onde usamos neste exemplo um sistema fictícios chamado “meusoftware” na url https://meusoftware.ambientelivre.com.br
O fonte pode ser visualizado no gitHub.
https://github.com/ambientelivre/multi-authentication/blob/master/index.html
Pode verificar que no arquivo HTML são realizados 2 Submits simultaneamente usando AJAX, direcionando os dados para dois arquivos php de autenticação , a do SuiteCRM nativo e os demais um php personalizado:
- SuiteCRM – /service/v4_1/rest.php
- Alfresco e Pentaho – ../authAlfrescoPentaho.php
authAlfrescoPentaho.php
Este arquivo recebe o POST do INDEX.HTML captura os dados de usuário e senha e faz outras requisições.
- Alfresco : https://meusoftware.ambientelivre.com.br/share/page/dologin
- Pentaho: https://meusoftware.ambientelivre.com.br/pentaho/j_spring_security_check
Obs. O Alfresco e Pentaho nesta caso estão sobre um proxy reverso NGIX para não apresentarem as postar do Tomcat. originalmente o Alfresco usa a porta 8080 ( https://meusoftware.ambientelivre.com.br:8080/share/ ) e o Pentaho usamos a 9090 ( https://meusoftware.ambientelivre.com.br:9090/pentaho )
Este PHP usou para autenticar o CURL e setou Cookies dos retornos para o usuário ficar autenticado. o fonte pode ser acessado no gitHub.
https://github.com/ambientelivre/multi-authentication/blob/master/authAlfrescoPentaho.php
Alterações para permitir o uso de IFRAME do Alfresco ( Cross-Origin )
O Alfresco tem um padrão de segurança muito bem elaborado e construído , então quando vamos fazer qualquer integração web com o mesmo , encontramos algumas dificuldades e temos de configurar diversos níveis de permissão para que isso funcione adequadamente , para que entenda o que vou adiciona abaixo recomendo fortemente ler sobre ou conhecer os conceitos de Cross-Origin antes de prosseguir
Para que o Cross-origin funcione deve existir estar configurações no arquivo alfresco-5.0.c/tomcat/shared/classes/alfresco/web-extension/share-config-custom.xml
<config evaluator=”string-compare” condition=”IFramePolicy” replace=”true”>
<cross-domain>
<url>http://portal.ambientelivre.com.br</url>
</cross-domain>
</config>
<config evaluator=”string-compare” condition=”SecurityHeadersPolicy” replace=”true” >
<headers>
<header>
<name>X-Frame-Options</name>
<enabled>false</enabled>
</header>
<header>
<name>X-Frame-Options</name>
<value>ALLOW-FROM http://portal.ambientelivre.com.br/</value>
</header>
<header>
<name>X-Frame-Options</name>
<value>ALLOW-FROM http://portal.ambientelivre.com.br/</value>
</header>
</headers>
</config>
Se ficou com alguma duvida comente o Post e posso complementar a solução.
Muito Obrigado, para mim isso foi muito útil.
Porém eu consegui fazer o login apenas no SuiteCRM, no Pentaho ainda não.
Acho que os cookies não estão sendo criados ou estão sendo criados errado.
Olá Thiago , vou tentar verificar se tem algum erro ou alteração , qual versão Pentaho vc esta usando ?
Ola, Marcio! Muito Obrigado… estou usando a verso 6.1 do Pentaho