Inicio de sesión único de Keycloak

Last reviewed 2023-02-27 UTC

En esta guía, se muestra cómo configurar el inicio de sesión único (SSO) entre Keycloak y tu cuenta de Cloud Identity o de Google Workspace mediante Federación de SAML. En el documento, se supone que instalaste y usas Keycloak.

Objetivos

  • Configura tu servidor de Keycloak, de manera que se pueda utilizar Cloud Identity o Google Workspace como un proveedor de identidad (IdP).
  • Configura tu cuenta de Cloud Identity o de Google Workspace a fin de que use Keycloak para SSO.

Antes de comenzar

  1. Si no tienes una cuenta de Cloud Identity, regístrate para obtener una.
  2. Asegúrate de que tu cuenta de Cloud Identity tenga privilegios de administrador avanzado.
  3. Si tu servidor de Keycloak se usa a fin de administrar más de un dominio, decide qué dominio quieres usar para la federación.
  4. Asegúrate de tener acceso de administrador al dominio seleccionado.

Configura Keycloak

Antes de habilitar el SSO en Cloud Identity o Google Workspace, debes crear un cliente para configurar tu servidor de Keycloak.

Crea un cliente

Para comenzar, crea un cliente en Keycloak:

  1. Accede a Keycloak y abre la consola del administrador.
  2. Selecciona el dominio que deseas usar para la federación.
  3. En el menú, selecciona Clients.
  4. Haz clic en Crear cliente.
  5. Establece la siguiente configuración para el cliente:

    KeyCloak 19 o una versión posterior

    • Tipo de cliente: SAML
    • Client ID: google.com
    • Name: Google Cloud

    KeyCloak 18 o versiones anteriores

    • Client ID: google.com
    • Client Protocol: saml
    • Client SAML Endpoint: Deja este campo en blanco.
  6. Haz clic en Guardar.

  7. Para especificar los detalles del cliente google.com, establece la siguiente configuración:

    KeyCloak 19 o una versión posterior

    En la pestaña Configuración, haz lo siguiente:

    • Valid Redirect URIs: https://www.google.com/*
    • Name ID Format: email
    • Force Name ID Format: on
    • Firmar documentos: off
    • Sign Assertions: on

    En la pestaña Keys, haz lo siguiente:

    • Client Signature Required: off

    KeyCloak 18 o versiones anteriores

    • Nombre: Un nombre como Google Cloud
    • Sign Assertions: on
    • Client Signature Required: off
    • Force Name ID Format: on
    • Name ID Format: email
    • Valid Redirect URIs: https://www.google.com/*

    Mantén los valores predeterminados para el resto de las opciones de configuración.

  8. Haz clic en Save.

Exporta el certificado de firma

Después de que Keycloak autentica a un usuario, pasa una aserción SAML a Cloud Identity o a Google Workspace. Para habilitar Cloud Identity y Google Workspace a fin de verificar la integridad y la autenticidad de esa aserción, Keycloak firma la aserción con una clave de firma de token especial y proporciona un certificado que habilita Cloud Identity o Google Workspace para verificar la firma.

Ahora, exportarás el certificado de firma desde Keycloak:

  1. En el menú, selecciona Realm settings.
  2. Selecciona la pestaña Keys.
  3. Busca la fila para Algoritmo: RS256 y Usar: SIG, y selecciona Certificado.

    Aparecerá un diálogo que contiene un certificado codificado en base64.

  4. Copia el valor del certificado codificado en base64 en el portapapeles.

Convierte el certificado de firma

Antes de que puedas usar el certificado de firma, debes convertirlo al formato PEM mediante la adición de un encabezado y un pie de página.

  1. Abre un editor de texto, como el Bloc de notas o vim.
  2. Pega el siguiente encabezado seguido de un salto de línea:

    -----BEGIN CERTIFICATE-----
    
  3. Pega el certificado codificado en base64 desde el portapapeles.

  4. Agrega una línea nueva y pega el siguiente pie de página:

    -----END CERTIFICATE-----
    

    El resultado es similar a este:

    -----BEGIN CERTIFICATE-----
    MIICmzCCAYMCBgF7v8/V1TANBgkq...
    -----END CERTIFICATE-----
    
  5. Guarda el archivo en una ubicación temporal en tu computadora.

Configura Cloud Identity

Ahora configurarás el inicio de sesión único en Cloud Identity o Google Workspace.

  1. Abre la Consola del administrador y accede con un usuario administrador avanzado.
  2. En el menú, haz clic en Mostrar más y ve a Seguridad > Autenticación > SSO con IdP de terceros.
  3. Haga clic en Agregar perfil de SSO.

  4. Configura Configurar SSO con un proveedor de identidad de terceros como habilitado.

  5. Ingresa las opciones de configuración siguientes:

    • URL de la página de acceso:

      KeyCloak 17 o una versión posterior

      https://KEYCLOAK/realms/REALM/protocol/saml
      

      KeyCloak 16 o versiones anteriores

      https://KEYCLOAK/auth/realms/REALM/protocol/saml
      
    • URL de la página de salida:

      KeyCloak 17 o una versión posterior

      https://KEYCLOAK/realms/REALM/protocol/openid-connect/logout
      

      KeyCloak 16 o versiones anteriores

      https://KEYCLOAK/auth/realms/REALM/protocol/openid-connect/logout?redirect_uri=https://KEYCLOAK/auth/realms/REALM/account/
      
    • Utilizar una entidad emisora específica del dominio: En blanco

    • Cambio de URL de contraseña:

      KeyCloak 17 o una versión posterior

      https://KEYCLOAK/realms/REALM/account
      

      KeyCloak 16 o versiones anteriores

      https://KEYCLOAK/auth/realms/REALM/account
      

    En todas las URL, reemplaza lo siguiente:

    • KEYCLOAK: El nombre de dominio completamente calificado de tu servidor Keycloak
    • REALM: El nombre del dominio seleccionado
  6. En Certificado de verificación, haz clic en Subir certificado y, luego, elige el certificado de firma de token que descargaste antes.

  7. Haz clic en Guardar.

  8. Sal de la Consola del administrador.

Prueba el inicio de sesión único

Completaste la configuración de inicio de sesión único. Ahora puedes verificar si el SSO funciona según lo previsto.

  1. Elige un usuario de Keycloak que cumpla con los siguientes criterios:

    • El usuario tiene una dirección de correo electrónico.
    • La dirección de correo electrónico corresponde a la dirección de correo electrónico principal de un usuario existente en tu cuenta de Cloud Identity o Google Workspace.
    • El usuario de Cloud Identity no tiene privilegios de administrador avanzado.

      Las cuentas de usuario que tienen privilegios de administrador avanzado siempre deben acceder mediante credenciales de Google, por lo que no son adecuadas para probar el inicio de sesión único.

  2. Abre una nueva ventana del navegador y ve a la consola de Google Cloud.

  3. En la página de Acceso con Google, ingresa la dirección de correo electrónico de la cuenta de usuario y, luego, haz clic en Siguiente (Next).

    Página de Acceso con Google.

    Se te redireccionará a Keycloak.

  4. Ingresa tus credenciales de Keycloak y, luego, haz clic en Log in.

    Después de realizar una autenticación exitosa, Keycloak te redirecciona a la consola de Google Cloud. Debido a que es el primer acceso de este usuario, se te pide que aceptes las Condiciones del Servicio y la Política de Privacidad de Google.

  5. Si estás de acuerdo con los términos, haz clic en Aceptar.

  6. Se te redireccionará a la consola de Google Cloud, que te pedirá que confirmes las preferencias y que aceptes las Condiciones del Servicio de Google Cloud. Si estás de acuerdo con las Condiciones del Servicio, haz clic en y, luego, en Aceptar y continuar.

  7. Haz clic en el ícono del avatar y, luego, en Salir.

    Se te redireccionará a Keycloak, saldrás y se te redireccionará a www.google.com.

Si tienes problemas para acceder, ten en cuenta que las cuentas de usuario con privilegios de administrador avanzado pueden omitir el SSO, por lo que aún puedes usar la Consola del administrador para verificar o cambiar la configuración.

¿Qué sigue?