Google Single Sign On en Liferay 7.2 con OpenId

Publicado por Miguel Ángel Júlvez el jue, 04 jul 2019 10:45:00 +0000

En Liferay 7.2 ya no está disponible el SSO de Google por defecto ya que se estaba usando una solución antigua para realizar la autenticación y esta ha sido deprecated (https://issues.liferay.com/browse/LPS-88905). Esta solución en desuso en teoría debería estar disponible en el Marketplace de Liferay pero a la hora de escribir este post todavía no está.

Actualmente la configuración recomendada para integrar el SSO de Google es mediante OpenId y eso es lo que vamos a ver a continuación en este post

OpenId es un estándar abierto que define un protocolo de autenticación descentralizado que es implementado por muchos proveedores de servicios actualmente. Google entre ellos. Más info en https://en.wikipedia.org/wiki/OpenID

Para realizar la integración vamos a dividir el proceso en 2 pasos:

  1. Generar un cliente Oauth2 en Google
  2. Configurar el cliente anterior en Liferay 7.2

 

Generar un cliente Oauth2 en Google

Para generar el cliente, debes ir a la url https://console.developers.google.com y loguéate con tu cuenta de Gmail.

A continuación, en la parte superior izquierda pulsas sobre el desplegable para seleccionar un proyecto

En la pantalla anterior, selecciona nuevo proyecto y le estableces el nombre que quieras. 

Una vez creado el proyecto, asegurándote que está seleccionado en el desplegable de la parte superior izquierda, ve a la opción de menú "Credenciales"

Y sobre el botón de crear credenciales, selecciona "ID de cliente de Oauth"

Lo que nos indica a continuación es que debemos configurar la pantalla de autorización (la que verán los usuarios de nuestra plataforma en el momento que se les pida seleccionar su cuenta de gmail para acceder al sistema)

En esta pantalla hay dos cosas importantes. La primera el nombre de la aplicación que es la que aparecerá resaltado en la pantalla que verán los usuarios.

Y la segunda cosa importante es los dominios autorizados para usar este cliente oauth. Aquí tendrás que poner tu dominio. Date cuenta que no se puede indicar "localhost" si quieres hacer alguna prueba sobre este dominio ya que no es un dominio de nivel superior válido, aunque no te preocupes, es dominio admitido por defecto.

A continuación indicamos que es una aplicación web e indicamos otras dos cosas importantes:

  • Las URLs autorizadas. En este caso tendrás que poner tu dominio y si quieres hacer pruebas con locahost también tendrás que ponerlo.
  • Las URs de redirección autorizadas. Esta es la url de Liferay que procesará los datos de la autorización openId realizada. Esta url es siempre:

http://<tudominio> /c/portal/login/openidconnect

Date cuenta que la url anterior siempre debería ser https salvo que estés haciendo pruebas rápidas en tu localhost

 

Y finalmente, obtendrás los datos que tendrás que usar en Liferay (no te asustes. Las credenciales de la imagen ya no son válidas).

 

Ya hemos terminado de configurar el cliente oauth en Google. Ahora vamos a configurar Liferay

 

Configurar el cliente anterior en Liferay 7.2

Accedemos como usuario administrador a:

Panel de control -> Configuración -> Configuración de sistema -> Seguridad -> SSO

Habilitamos la autenticación mediante OpenId

Y creamos un proveedor de Open Id. Lo llamamos, por ejemplo, Google e introducimos los datos de configuración que hemos obtenido en el último paso a la hora de crear el cliente Oauth2 en google: el identificador del cliente y la secret key.

Además, la última cosa importante de configuración es establecer la url que permitirá invocar al proveedor de OpenId. Esta url es:

https://accounts.google.com/.well-known/openid-configuration

Estableciendo esta url, ya no es necesario establecer el resto de urls que aparecen mas abajo en la pantalla de configuración.

 

Para probar que funciona, simplemente vais a loguearos al sistema y veréis que aparece un nuevo enlace llamado “OpenId Connect”.

 

Al pulsar en él, se muestra un selector con todos los proveedores openId configurados.

 

Seleccionáis el que hemos creado en el paso anterior llamado Google y veréis como os lleva a la típica pantalla de Google para seleccionar la cuenta con la que vais a loguearos. Una vez seleccionada la cuenta, veréis que accedéis al portal con vuestra cuenta de gmail.

 

Si queréis saltaros el paso de la selección del proveedor de openId, podéis usar la siguiente url

http://localhost:8080/es/acceso/-/login/openid_connect_request?_com_liferay_login_web_portlet_LoginPortlet_OPEN_ID_CONNECT_PROVIDER_NAME=Google&_com_liferay_login_web_portlet_LoginPortlet_redirect=http://localhost:8080

Donde /acceso es una página de Liferay en la que se encuentre el portlet login De esta forma, podéis añadir el típico botón de acceso con google en el que al hacer click abra una popup donde se redirija a la url anterior que a su vez redirigirá a la pantalla de selección de cuenta de google

Cargando comentarios...