login con Facebook Entra Externa ID

Villanueva, Jose 0 Puntos de reputación
2025-01-07T18:29:30.3866667+00:00

Al habilitar el login con Facebook si el usuario no esta registrado automáticamente registra al usuario tras el login , queremos saber como restringir el login de un user flow para facebook o gmail y si el usuario no se ha registrado aun que de error y no lo auto aprovisione

Azure
Azure
Plataforma e infraestructura de informática en la nube para crear, implementar y administrar aplicaciones y servicios a través de una red mundial de centros de datos administrados por Microsoft.
517 preguntas
Id. externa de Microsoft Entra
Id. externa de Microsoft Entra
Solución de identidad moderna para proteger el acceso a aplicaciones y servicios orientados a clientes, ciudadanos y asociados. Es la plataforma convergida de Azure AD External Identities B2B y B2C. Reemplaza las identidades externas de Azure Active Directory.
9 preguntas
0 comentarios No hay comentarios
{count} votos

2 respuestas

Ordenar por: Muy útil
  1. Gao Chen 4,890 Puntos de reputación Proveedor de Microsoft
    2025-01-07T20:17:03.1333333+00:00

    Hola Villanueva, Jose,

    ¡Bienvenido(a) a Microsoft Q&A!

    Entiendo que quieres restringir el login de un user flow para Facebook o Gmail y evitar el auto aprovisionamiento de usuarios no registrados, puedes seguir estos pasos:

    1. Deshabilitar el auto aprovisionamiento: Configura tu sistema de autenticación para que no cree automáticamente nuevas cuentas de usuario cuando alguien inicia sesión con Facebook o Gmail. Esto se puede hacer ajustando las configuraciones de tu proveedor de autenticación (como Firebase, Auth0, etc.) para que solo permita el acceso a usuarios previamente registrados.
    2. Implementar una verificación de registro: Antes de permitir el acceso, verifica si el usuario ya está registrado en tu base de datos. Si no lo está, muestra un mensaje de error indicando que el usuario debe registrarse primero.
    3. Configuración de OAuth manual: Implementa un flujo de OAuth manual donde controles el proceso de autenticación y verificación de usuarios. Esto te permitirá verificar si el usuario ya está registrado antes de completar el proceso de inicio de sesión.
    4. Mensajes de error personalizados: Asegúrate de que tu aplicación maneje adecuadamente los casos en los que un usuario no registrado intenta iniciar sesión, proporcionando mensajes de error claros y opciones para registrarse. Aquí tienes un ejemplo de cómo podrías implementar esto en código:
    // Ejemplo en Node.js usando Express y Passport.js
    
    const express = require('express');
    const passport = require('passport');
    const FacebookStrategy = require('passport-facebook').Strategy;
    const GoogleStrategy = require('passport-google-oauth20').Strategy;
    
    const app = express();
    
    // Configuración de Passport para Facebook
    passport.use(new FacebookStrategy({
        clientID: 'FACEBOOK_APP_ID',
        clientSecret: 'FACEBOOK_APP_SECRET',
        callbackURL: '/auth/facebook/callback'
      },
      function(accessToken, refreshToken, profile, done) {
        // Verificar si el usuario está registrado en la base de datos
        User.findOne({ facebookId: profile.id }, function(err, user) {
          if (err) { return done(err); }
          if (!user) {
            // Usuario no registrado
            return done(null, false, { message: 'Usuario no registrado. Por favor, regístrese primero.' });
          }
          return done(null, user);
        });
      }
    ));
    
    // Configuración de Passport para Google
    passport.use(new GoogleStrategy({
        clientID: 'GOOGLE_CLIENT_ID',
        clientSecret: 'GOOGLE_CLIENT_SECRET',
        callbackURL: '/auth/google/callback'
      },
      function(token, tokenSecret, profile, done) {
        // Verificar si el usuario está registrado en la base de datos
        User.findOne({ googleId: profile.id }, function(err, user) {
          if (err) { return done(err); }
          if (!user) {
            // Usuario no registrado
            return done(null, false, { message: 'Usuario no registrado. Por favor, regístrese primero.' });
          }
          return done(null, user);
        });
      }
    ));
    
    app.get('/auth/facebook', passport.authenticate('facebook'));
    app.get('/auth/google', passport.authenticate('google', { scope: ['profile'] }));
    
    app.get('/auth/facebook/callback', 
      passport.authenticate('facebook', { failureRedirect: '/login' }),
      function(req, res) {
        // Successful authentication
        res.redirect('/');
      });
    
    app.get('/auth/google/callback', 
      passport.authenticate('google', { failureRedirect: '/login' }),
      function(req, res) {
        // Successful authentication
        res.redirect('/');
      });
    
    app.listen(3000, () => {
      console.log('Server is running on port 3000');
    });
    

    Este ejemplo muestra cómo configurar Passport.js para manejar la autenticación con Facebook y Google, verificando si el usuario ya está registrado antes de permitir el acceso. Espero que la información brindada ayude a resolver el problema, si necesitas más asistencia, estoy a tu disposición.

    Atentamente,

    Gao.


    Si esta respuesta resolvió tu consulta, por favor haz clic en 'Aceptar respuesta'. Esto nos ayuda a mejorar continuamente la calidad y relevancia de nuestras soluciones.


  2. Villanueva, Jose 0 Puntos de reputación
    2025-01-08T06:55:26.52+00:00

    Buenas Estamos usando MSAL en angular , y hemos configurado el User Flow, sabe si con MSAL se puede verificar la existencia de la cuenta en Entra id antes de que el usuario selecciones Facebook como proveedor.

    Gracias

    0 comentarios No hay comentarios

Su respuesta

Las respuestas se pueden marcar como respuestas aceptadas por el autor de la pregunta, lo que ayuda a los usuarios a conocer la respuesta que resolvió el problema del autor.