Migrar usuarios a Azure AD B2CMigrate users to Azure AD B2C

La migración desde otro proveedor de identidades a Azure Active Directory B2C (Azure AD B2C) puede requerir también la migración de las cuentas de usuario existentes.Migrating from another identity provider to Azure Active Directory B2C (Azure AD B2C) might also require migrating existing user accounts. Aquí se describen dos métodos de migración, importación en bloque y migración de conexión directa.Two migration methods are discussed here, bulk import and seamless migration. Con cualquiera de estos enfoques, es necesario escribir una aplicación o un script que use Microsoft Graph API para crear cuentas de usuario en Azure AD B2C.With either approach, you're required to write an application or script that uses the Microsoft Graph API to create user accounts in Azure AD B2C.

Importación en bloqueBulk import

En el flujo de importación en bloque, la aplicación de migración realiza estos pasos para cada cuenta de usuario:In the bulk import flow, your migration application performs these steps for each user account:

  1. Lea la cuenta de usuario del proveedor de identidades anterior, incluidas sus credenciales actuales (nombre de usuario y contraseña).Read the user account from the old identity provider, including its current credentials (username and password).
  2. Cree una cuenta correspondiente en el directorio de Azure AD B2C con las credenciales actuales.Create a corresponding account in your Azure AD B2C directory with the current credentials.

Use el flujo de importación en bloque en cualquiera de estas dos situaciones:Use the bulk import flow in either of these two situations:

  • Tiene acceso a las credenciales de texto no cifrado de un usuario (su nombre de usuario y contraseña).You have access to a user's plaintext credentials (their username and password).
  • Las credenciales están cifradas, pero puede descifrarlas.The credentials are encrypted, but you can decrypt them.

Para información sobre la creación de cuentas de usuario mediante programación, consulte Administrar cuentas de usuario de Azure AD B2C con Microsoft Graph.For information about programmatically creating user accounts, see Manage Azure AD B2C user accounts with Microsoft Graph.

Migración de conexión directaSeamless migration

Use el flujo de migración de conexión directa si no se puede tener acceso a las contraseñas de texto no cifrado del proveedor de identidades anterior.Use the seamless migration flow if plaintext passwords in the old identity provider are not accessible. Por ejemplo, cuando:For example, when:

  • La contraseña se almacena en formato cifrado unidireccional, como con una función hash.The password is stored in a one-way encrypted format, such as with a hash function.
  • El proveedor de identidades heredado ha almacenado la contraseña de modo que no puede tener acceso.The password is stored by the legacy identity provider in a way that you can't access. Por ejemplo, cuando el proveedor de identidades valida las credenciales mediante una llamada a un servicio web.For example, when the identity provider validates credentials by calling a web service.

El flujo de migración de conexión directa sigue requiriendo la migración en bloque de las cuentas de usuario, pero después usa una directiva personalizada para consultar una API de REST (que usted crea) a fin de establecer la contraseña de cada usuario al iniciar sesión por primera vez.The seamless migration flow still requires bulk migration of user accounts, but then uses a custom policy to query a REST API (which you create) to set each users' password at first sign-in.

Por lo tanto, el flujo de migración de conexión directa tiene dos fases: importación en bloque y establecimiento de credenciales.The seamless migration flow thus has two phases: bulk import and set credentials.

Fase 1: Importación en bloquePhase 1: Bulk import

  1. La aplicación de migración lee las cuentas de usuario del proveedor de identidades anterior.Your migration application reads the user accounts from the old identity provider.
  2. La aplicación de migración crea las cuentas de usuario correspondientes en el directorio de Azure AD B2C, pero no establece las contraseñas.The migration application creates corresponding user accounts in your Azure AD B2C directory, but does not set passwords.

Fase 2: Establecer credencialesPhase 2: Set credentials

Una vez completada la migración en bloque de las cuentas, la directiva personalizada y la API de REST realizan lo siguiente cuando un usuario inicia sesión:After bulk migration of the accounts is complete, your custom policy and REST API then perform the following when a user signs in:

  1. Leen la cuenta de usuario de Azure AD B2C correspondiente a la dirección de correo electrónico especificada.Read the Azure AD B2C user account corresponding to the email address entered.
  2. Comprueban si la cuenta está marcada para la migración mediante la evaluación de un atributo de extensión booleano.Check whether the account is flagged for migration by evaluating a boolean extension attribute.
    • Si el atributo de extensión devuelve True, llame a la API de REST para validar la contraseña con el proveedor de identidades heredado.If the extension attribute returns True, call your REST API to validate the password against the legacy identity provider.
      • Si la API de REST determina que la contraseña es incorrecta, devuelve un error descriptivo al usuario.If the REST API determines the password is incorrect, return a friendly error to the user.
      • Si la API de REST determina que la contraseña es correcta, escriba la contraseña para la cuenta de Azure AD B2C y cambie el atributo de extensión booleano a False.If the REST API determines the password is correct, write the password to the Azure AD B2C account and change the boolean extension attribute to False.
    • Si el atributo de extensión booleano devuelve False, continúe el proceso de inicio de sesión de la forma habitual.If the boolean extension attribute returns False, continue the sign-in process as normal.

Para ver un ejemplo de una directiva personalizada y una API de REST, consulte el ejemplo de migración de usuarios de conexión directa en GitHub.To see an example custom policy and REST API, see the seamless user migration sample on GitHub.

Diagrama de flujo del enfoque de migración de conexión directa de la migración de usuariosFlowchart diagram of the seamless migration approach to user migration
Diagrama: flujo de migración de conexión directaDiagram: Seamless migration flow

Procedimientos recomendadosBest practices

SeguridadSecurity

El enfoque de migración de conexión directa usa su propia API de REST personalizada para validar las credenciales de un usuario con el proveedor de identidades heredado.The seamless migration approach uses your own custom REST API to validate a user's credentials against the legacy identity provider.

Debe proteger la API de REST contra ataques por fuerza bruta.You must protect your REST API against brute-force attacks. Un atacante puede enviar varias contraseñas con la esperanza de adivinar las credenciales de un usuario.An attacker can submit several passwords in the hope of eventually guessing a user's credentials. Para ayudar a frustrar estos ataques, deje de servir solicitudes a la API de REST cuando el número de intentos de inicio de sesión supere un determinado umbral.To help defeat such attacks, stop serving requests to your REST API when the number of sign-in attempts passes a certain threshold. Además, proteja la comunicación entre Azure AD B2C y la API REST.Also, secure the communication between Azure AD B2C and your REST API. Para aprender a proteger las API RESTful para la producción, consulte Proteger la API RESTful.To learn how to secure your RESTful APIs for production, see Secure RESTful API.

Atributos de usuarioUser attributes

No toda la información del proveedor de identidades heredado debe migrarse al directorio de Azure AD B2C.Not all information in the legacy identity provider should be migrated to your Azure AD B2C directory. Identifique el conjunto de atributos de usuario adecuado que se debe almacenar en Azure AD B2C antes de la migración.Identify the appropriate set of user attributes to store in Azure AD B2C before migrating.

  • ALMACENE en Azure AD B2CDO store in Azure AD B2C
    • El nombre de usuario, la contraseña, las direcciones de correo electrónico, los números de teléfono, los números de pertenencia o identificadores.Username, password, email addresses, phone numbers, membership numbers/identifiers.
    • Marcadores de consentimiento para la directiva de privacidad y los contratos de licencia para el usuario final.Consent markers for privacy policy and end-user license agreements.
  • NO ALMACENE en Azure AD B2CDO NOT store in Azure AD B2C
    • Datos confidenciales, como números de tarjetas de crédito, números de seguridad social (SSN), registros médicos u otros datos regulados por el gobierno u organismos de cumplimiento del sector.Sensitive data like credit card numbers, social security numbers (SSN), medical records, or other data regulated by government or industry compliance bodies.
    • Preferencias de marketing o de comunicación, comportamientos de los usuarios y conocimientos.Marketing or communication preferences, user behaviors, and insights.

Limpieza de directoriosDirectory clean-up

Antes de comenzar el proceso de migración, aproveche la oportunidad para limpiar el directorio.Before you start the migration process, take the opportunity to clean up your directory.

  • Identifique el conjunto de atributos de usuario que se van a almacenar en Azure AD B2C y migre solo lo que necesite.Identify the set of user attributes to be stored in Azure AD B2C, and migrate only what you need. Si es necesario, puede crear atributos personalizados para almacenar más datos sobre un usuario.If necessary, you can create custom attributes to store more data about a user.
  • Si va a migrar desde un entorno con varios orígenes de autenticación (por ejemplo, cada aplicación tiene su propio directorio de usuario), migre a una cuenta unificada en Azure AD B2C.If you're migrating from an environment with multiple authentication sources (for example, each application has its own user directory), migrate to a unified account in Azure AD B2C.
  • Si varias aplicaciones tienen distintos nombres de usuario, puede almacenarlas todas en una cuenta de usuario de Azure AD B2C mediante la colección de identidades.If multiple applications have different usernames, you can store all of them in an Azure AD B2C user account by using the identities collection. Con respecto a la contraseña, permita que el usuario elija una y establézcala en el directorio.With regard to the password, let the user choose one and set it in the directory. Por ejemplo, con la migración de conexión directa, solo la contraseña elegida debe almacenarse en la cuenta de Azure AD B2C.For example, with the seamless migration, only the chosen password should be stored in the Azure AD B2C account.
  • Quite las cuentas de usuario no utilizadas antes de la migración o no migre cuentas obsoletas.Remove unused user accounts before migration, or do not migrate stale accounts.

Directiva de contraseñasPassword policy

Si las cuentas que se van a migrar tienen una seguridad de contraseña inferior a la seguridad de contraseña segura que exige Azure AD B2C, puede deshabilitar el requisito de contraseña segura.If the accounts you're migrating have weaker password strength than the strong password strength enforced by Azure AD B2C, you can disable the strong password requirement. Para obtener más información, vea Propiedad de directiva de contraseñas.For more information, see Password policy property.

Pasos siguientesNext steps

El repositorio azure-ad-b2c/user-migration de GitHub contiene un ejemplo de directiva personalizada de migración de conexión directa y un ejemplo de código de API de REST:The azure-ad-b2c/user-migration repository on GitHub contains a seamless migration custom policy example and REST API code sample:

Directiva personalizada de migración de usuarios de conexión directa y ejemplo de código de API de RESTSeamless user migration custom policy & REST API code sample