Es posible que el cliente ya tenga un sistema funcionando y quiera integrarle GXportal, en este caso el cliente ya cuenta con su base de datos de usuarios. En este se requiere que al autenticarse en el portal se controle que el usuario y contraseña sean válidos sobre la base de datos de usuarios de una aplicación externa. Esto requiere de configuración del lado de GXportal y desarrollar un web service del lado del cliente.
Dentro de este esquema es necesario que la aplicación externa provea un web service cuya interfaz está definida por GXportal. Este web service realizará la validación de la autenticación del usuario, como por ejemplo realizando la validación sobre:
-
Una base de datos de usuarios de una aplicación externa
-
LDAP
-
Active Directory
-
Etc.
Para configurar en el portal la utilización del web service para realizar SSO se debe ir a la opción del menú “Configuración” y dentro de este “Panel de Control”. Al acceder a dicha opción se desplegará la siguiente pantalla:
En dicha ventana se debe hacer clic en el botón “Seguridad”, permitiendo esto acceder a la Administración de seguridad. Ésta permitirá configurar el Tipo de autenticación que se desea implementar, para este caso se debe seleccionar “Web service externo” como lo muestra la figura siguiente.
Luego de configurar el tipo de autenticación se deben Grabar los datos y dar clic en la opción ”Web service externo”.
Vea un
EJEMPLO aquí.
Como funciona
Cuando se configura seguridad externa y el usuario se identifica en GXportal, el mismo es validado por el web service, si el usuario es correcto el mismo retornará los datos del usuario que se dará de alta en la base de datos de GXportal para llevar la información estadística sobre la navegación del mismo en el portal. Si el mismo ya existe en GXportal, se actualiza la información en dicha base de datos. Si el rol del usuario identificado no está definido en GXportal, el mismo tomará el rol configurado en la sección “Web service externo”, en la propiedad Rol a tomar cuando el rol externo es desconocido para GXportal.
Como se implementa
La aplicación externa deberá proveer un web service que se invocará a través del protocolo SOAP. El mismo es para validar la autenticación del usuario (valida usuario y contraseña). Este web service puede ser desarrollado en cualquier plataforma y no importa el nombre del mismo. Si en el portal se desea configurar que el mismo fue desarrollado con GeneXus se debe proveer el web service en la misma plataforma que se instaló GXportal (.Net o Java). Para este caso el web service se deberá denominar gamwslogin.
El web service debe tener 2 parámetros, uno de entrada de tipo
GAMWSLoginInSDT y otro de salida de tipo
GAMWSLoginOutSDT.
Tipo:
GAMWSLoginInSDT
Nombre |
Descripción |
Tipo |
GAMUsrLogin |
Identificador de usuario (login) |
String |
GAMUsrPwd |
Contraseña del usuario |
String |
GAMUsrAddPar |
Colección de parámetros adicionales que indican desde donde se está intentado autenticar el usuario |
GAMWSLoginInAddParSDT |
Tipo:
GAMWSLoginInAddParSDT
Nombre |
Descripción |
Tipo |
GAMAddParId |
Identificador del parámetro adicional |
String |
GAMAddParValue |
Valor del parámetro adicional |
String |
En este tipo de datos GXportal envía:
GAMAddParId |
GAMAddParValue |
NWLngId |
Idioma en cual el usuario está viendo el portal |
Websiteid |
Identificador de portal |
Channelid |
Identificador de canal |
Pageid |
Identificador de página |
Sectorid |
Identificador de sector |
Tipo:
GAMWSLoginOutSDT
Nombre |
Descripción |
Tipo |
WSVersion |
Indica la versión del web service implementado (debe ser “1.0”) |
String |
WSStatus |
Indica el estado de la respuesta, donde:
1 = Usuario y contraseña correctos
2 = Usuario desconocido
3 = Contraseña incorrecta
4 = Acceso denegado
|
Short |
WSMessage |
Mensaje personalizado a desplegar cuado el usuario se intenta autenticar. |
String |
User |
Información del usuario autenticado |
GAMWSLoginOutUserSDT |
Para mostrar mensajes personalizados en el campo WSStatus se debe asignar el valor 99999 y en el campo WSMessage el mensaje que corresponda.
Tipo:
GAMWSLoginOutUserSDT
Nombre |
Descripción |
Tipo |
Code |
Identificador de usuario |
String |
FirstName |
Primer Nombre del usuario |
String |
LastName |
Apellido del usuario |
String |
Email |
Correo electrónico del usuario |
String |
Roles |
Lista de roles del usuario |
GAMWSLoginOutUserSDTRoleItem |
Tipo:
GAMWSLoginOutUserSDTRoleItem
Nombre |
Descripción |
Tipo |
RoleCode |
Identificador externo del rol |
String |
Ejemplo del código XML que debe retornar el 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>