É possível que o cliente já tenha um sistema funcionando e queira integrá-lo a GXportal; neste caso, o cliente já conta com seu banco de dados de usuários. Exige-se então que ao autenticar-se no portal, haja um controle de que o usuário e a senha sejam válidos no banco de dados de um aplicativo externo. Isso requer uma configuração no GXportal e desenvolver um web service do lado do cliente.
Dentro desse esquema, é necessário que o aplicativo disponibilize um web service cuja interface é definida por GXportal. Este web service realizará a validação da autenticação do usuário, realizando, por exemplo, a validação sobre:
-
Um banco de dados de usuários de um aplicativo externo
-
LDAP
-
Active Directory
-
Etc.
Para configurar no portal a utilização do web service para realizar SSO, deve-se ir à opção do menu “Configuração” e, dentro deste, “Painel de Controle”. Ao acessar tal opção, abrirá a seguinte tela:
Nessa janela, deve-se clicar sobre o item “Segurança”, o que permite acessar à Administração de segurança. Ali será possível configurar o Tipo de autenticação que se deseja implementar. Para este caso, deve-se selecionar “Web service externo”, como mostra a figura abaixo.
Depois de configurar o tipo de autenticação, devem-se gravar os dados e clicar na opção “Web service externo”.
Como funciona
Quando se configura segurança externa e o usuário se identifica no GXportal, este é validado pelo web service. Se o usuário estiver correto o web service retornará os dados do usuário, que será registrado no banco de dados de GXportal para levar informação estatística sobre a navegação deste usuário no portal. Se o usuário já existe no GXportal, a informação é atualizada no banco de dados. Se o papel do usuário identificado não está definido no GXportal, o mesmo tomará o papel configurado na seção “Web service externo” na propriedade Papel, que será utilizado quando o papel externo é desconhecido para o GXportal.
Como se implementa
O aplicativo externo deverá prover um web service que será invocado através do protocolo SOAP. O mesmo servirá para validar a autenticação do usuário (valida usuário e senha). Este web service pode ser desenvolvido em qualquer plataforma e não importa seu nome. Se no portal deseja-se configurar que ele foi desenvolvido com GeneXus, deve-se prover o web service na mesma plataforma que se instalou GXportal (.Net ou Java). Para este caso, o web service deverá denominar-se gamwslogin.
O web service deve ter 2 parâmetros: um de entrada, do tipo GAMWSLoginInSDT , e o outro de saída, do tipo GAMWSLoginOutSDT.
El web service debe tener 2 parámetros, uno de entrada de tipo
GAMWSLoginInSDT y otro de salida de tipo
GAMWSLoginOutSDT.
Tipo:
GAMWSLoginInSDT
Nome |
Descriç ão |
Tipo |
GAMUsrLogin |
Identificador de usuário (login) |
String |
GAMUsrPwd |
Senha do usuário |
String |
GAMUsrAddPar |
Conjunto de parâmetros adicionais que indicam de onde se está tentando autenticar o usuário |
GAMWSLoginInAddParSDT |
Tipo:
GAMWSLoginInAddParSDT
Nome |
Descrição |
Tipo |
GAMAddParId |
Identificador do parâmetro adicional |
String |
GAMAddParValue |
Valor do parâmetro adicional |
String |
Neste tipo de dados, GXportal envia:
GAMAddParId |
GAMAddParValue |
NWLngId |
Idioma no qual o usuário está vendo o portal |
Websiteid |
Identificador do portal |
Channelid |
Identificador do canal |
Pageid |
Identificador da página |
Sectorid |
Identificador do setor |
Tipo:
GAMWSLoginOutSDT
Nome |
Descrição |
Tipo |
WSVersion |
Indica a versão do web service implementado (deve ser “1.0”) |
String |
WSStatus |
Indica o estado da resposta, onde:
1 = Usuário e senha corretos
2 = Usuário desconhecido
3 = Senha incorreta
4 = Acesso negado
|
Short |
WSMessage |
Mensagem personalizada que se abrirá quando se o usuário tenta autenticar-se. |
String |
User |
Informação do usuário autenticado |
GAMWSLoginOutUserSDT |
Tipo:
GAMWSLoginOutUserSDT
Nome |
Descrição |
Tipo |
Code |
Identificador de usuário |
String |
FirstName |
Primeiro Nome do usuário |
String |
LastName |
Sobrenome do usuário |
String |
Email |
E-mail do usuário |
String |
Roles |
Lista de papéis do usuário |
GAMWSLoginOutUserSDTRoleItem |
Tipo:
GAMWSLoginOutUserSDTRoleItem
Nome |
Descrição |
Tipo |
RoleCode |
Identificador externo do papel |
String |
Exemplo do código XML que deve retornar ao web service:
<GAMWSLoginOutSDT xmlns="GAM">
<WSVersion>1.0</WSVersion>
<WSStatus>1</WSStatus>
<WSMessage />
<User>
<Code>500</Code>
<FirstName>Juan</FirstName>
<LastName>Perez</LastName>
<EMail>jperez@gxportal.com</EMail>
<Roles>
<GAMWSLoginOutUserSDT.RoleItem>
<RoleCode>4</RoleCode>
</GAMWSLoginOutUserSDT.RoleItem>
<GAMWSLoginOutUserSDT.RoleItem>
<RoleCode>10</RoleCode>
</GAMWSLoginOutUserSDT.RoleItem>
<GAMWSLoginOutUserSDT.RoleItem>
<RoleCode>15</RoleCode>
</GAMWSLoginOutUserSDT.RoleItem>
</Roles>
</User>
</GAMWSLoginOutSDT>