Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Autenticar usando SAML en aplicaciones web

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Si actualizó a Firebase Authentication con Identity Platform, puede autenticar a sus usuarios con Firebase mediante el proveedor de identidad SAML de su elección. Esto hace posible usar su solución SSO basada en SAML para que los usuarios inicien sesión en su aplicación Firebase.

Firebase Authentication solo admite el flujo de SAML iniciado por el proveedor de servicios.

Antes de que empieces

Para que los usuarios inicien sesión con un proveedor de identidad SAML, primero debe recopilar cierta información del proveedor:

  • El ID de entidad del proveedor : un URI que identifica al proveedor de identidad.
  • La URL de inicio de sesión único de SAML del proveedor : la URL de la página de inicio de sesión del proveedor de identidad.
  • El certificado de clave pública del proveedor : el certificado utilizado para validar tokens firmados por el proveedor de identidad.
  • El ID de entidad de su aplicación : un URI que identifica su aplicación, el "proveedor de servicios".

Una vez que tenga la información anterior, habilite SAML como proveedor de inicio de sesión para su proyecto de Firebase:

  1. Agregue Firebase a su proyecto de JavaScript .

  2. Si no actualizó a Firebase Authentication con Identity Platform, hágalo. La autenticación SAML solo está disponible en proyectos actualizados.

  3. En la página Proveedores de inicio de sesión de Firebase console, haga clic en Agregar nuevo proveedor y luego haga clic en SAML .

  4. Asigne un nombre a este proveedor. Tenga en cuenta el ID de proveedor que se genera: algo como saml.example-provider . Necesitará este ID cuando agregue el código de inicio de sesión a su aplicación.

  5. Especifique el ID de entidad, la URL de SSO y el certificado de clave pública de su proveedor de identidad. Especifique también el ID de entidad de su aplicación (el proveedor de servicios). Estos valores deben coincidir exactamente con los valores que su proveedor le asignó.

  6. Guarde sus cambios.

  7. Si aún no autorizó el dominio de su aplicación, agréguelo a la lista de permitidos en la página Autenticación > Configuración de Firebase console.

Manejar el flujo de inicio de sesión con el SDK de Firebase

Para manejar el flujo de inicio de sesión con el SDK de JavaScript de Firebase, sigue estos pasos:

  1. Cree una instancia de SAMLAuthProvider con el ID de proveedor que obtuvo en la consola de Firebase.

    Web version 9

    import { SAMLAuthProvider } from "firebase/auth";
    
    const provider = new SAMLAuthProvider('saml.example-provider');
    

    Web version 8

    var provider = new firebase.auth.SAMLAuthProvider('saml.example-provider');
    ``
    
  1. Autenticarse con Firebase mediante el objeto del proveedor SAML.

    Puede redirigir al usuario a la página de inicio de sesión del proveedor o abrir la página de inicio de sesión en una ventana emergente del navegador.

    Flujo de redireccionamiento

    Redirige a la página de inicio de sesión del proveedor llamando a signInWithRedirect() :

    Web version 9

    import { getAuth, signInWithRedirect } from "firebase/auth";
    
    const auth = getAuth();
    signInWithRedirect(auth, provider);
    

    Web version 8

    firebase.auth().signInWithRedirect(provider);
    

    Después de que el usuario complete el inicio de sesión y regrese a su aplicación, puede obtener el resultado del inicio de sesión llamando a getRedirectResult() .

    Web version 9

    import { getAuth, getRedirectResult, SAMLAuthProvider } from "firebase/auth";
    
    const auth = getAuth();
    getRedirectResult(auth)
      .then((result) => {
        // User is signed in.
    
        // Provider data available using getAdditionalUserInfo()
      })
      .catch((error) => {
        // Handle error.
      });
    

    Web version 8

    firebase.auth().getRedirectResult()
      .then((result) => {
        // User is signed in.
    
        // Provider data available in result.additionalUserInfo.profile,
        // or from the user's ID token obtained from result.user.getIdToken()
        // as an object in the firebase.sign_in_attributes custom claim.
      })
      .catch((error) => {
        // Handle error.
      });
    

    Flujo emergente

    Web version 9

    import { getAuth, signInWithPopup, OAuthProvider } from "firebase/auth";
    
    const auth = getAuth();
    signInWithPopup(auth, provider)
      .then((result) => {
        // User is signed in.
    
        // Provider data available in result.additionalUserInfo.profile,
        // or from the user's ID token obtained from result.user.getIdToken()
        // as an object in the firebase.sign_in_attributes custom claim.
      })
      .catch((error) => {
        // Handle error.
      });
    

    Web version 8

    firebase.auth().signInWithPopup(provider)
      .then((result) => {
        // User is signed in.
    
        // Provider data available in result.additionalUserInfo.profile,
        // or from the user's ID token obtained from result.user.getIdToken()
        // as an object in the firebase.sign_in_attributes custom claim.
      })
      .catch((error) => {
        // Handle error.
      });
    
  2. Si bien los ejemplos anteriores se centran en los flujos de inicio de sesión, puede usar el mismo patrón para vincular un proveedor de SAML a un usuario existente mediante linkWithRedirect() y linkWithPopup() , y volver a autenticar a un usuario con reauthenticateWithRedirect() y reauthenticateWithPopup() , que se puede usar para recuperar credenciales nuevas para operaciones confidenciales que requieren un inicio de sesión reciente.