Introducción
Migrar usuarios desde un proveedor de identidad existente hacia Azure AD B2C puede ser un desafío técnico, especialmente cuando se trata de preservar contraseñas y perfiles. El repositorio oficial en GitHub azure-ad-b2c/user-migration proporciona ejemplos prácticos para abordar este proceso de manera estructurada. En este artículo, exploraremos los aspectos técnicos más relevantes de esta solución y cómo implementarla en escenarios reales.
Note: Si deseas profundizar en cómo Microsoft utiliza tus datos en servicios como Azure AD B2C, revisa nuestro artículo sobre Actualizaciones en nuestra Declaración de Privacidad y Términos de Servicio.
Requisitos previos
Antes de comenzar, asegúrate de cumplir con los siguientes requisitos:
- Acceso a Azure AD B2C: Necesitarás una instancia configurada de Azure AD B2C.
- Conocimiento básico de REST APIs: Las operaciones de migración utilizan endpoints de API.
- Configuración de GitHub: Clona el repositorio azure-ad-b2c/user-migration para acceder a los ejemplos.
- Herramientas recomendadas:
- Azure CLI
- Postman o cualquier herramienta de prueba de APIs
- Python 3.x (para ejecutar scripts de ejemplo)
Arquitectura de migración
El flujo de migración propuesto por el repositorio consta de tres pasos principales:
- Exportación de datos: Obtener los datos de usuario desde el proveedor de identidad actual.
- Transformación de datos: Convertir los datos al formato requerido por Azure AD B2C.
- Importación de datos: Crear usuarios en Azure AD B2C utilizando la API de Graph.
A continuación, detallamos cada paso con ejemplos prácticos.
Paso 1: Exportación de datos
El primer paso es extraer los datos de usuario desde tu proveedor de identidad actual. Supongamos que los datos están almacenados en una base de datos SQL. Puedes usar el siguiente script en Python para exportarlos:
import pyodbc
import csv
# Configuración de conexión a la base de datos
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=tu_servidor;DATABASE=tu_base_de_datos;UID=usuario;PWD=contraseña')
cursor = conn.cursor()
# Consulta para extraer usuarios
query = "SELECT username, email, password_hash FROM Users"
cursor.execute(query)
# Exportación a un archivo CSV
with open('usuarios_exportados.csv', 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['username', 'email', 'password_hash']) # Encabezados
for row in cursor.fetchall():
writer.writerow(row)
print("Exportación completada. Archivo: usuarios_exportados.csv")
Warning: Asegúrate de que los datos sensibles, como hashes de contraseñas, estén protegidos durante el proceso de exportación.
Paso 2: Transformación de datos
Azure AD B2C requiere que los datos de usuario estén en un formato específico. Por ejemplo, los hashes de contraseñas deben ser compatibles con el algoritmo de tu política de identidad. Utiliza el siguiente script para transformar los datos exportados:
import csv
# Archivo de entrada y salida
input_file = 'usuarios_exportados.csv'
output_file = 'usuarios_transformados.csv'
def transformar_datos(row):
# Ejemplo: Normalizar correos electrónicos y añadir un atributo adicional
row['email'] = row['email'].lower()
row['custom_attribute'] = 'valor_predeterminado'
return row
# Transformación
with open(input_file, 'r', encoding='utf-8') as infile, open(output_file, 'w', newline='', encoding='utf-8') as outfile:
reader = csv.DictReader(infile)
fieldnames = reader.fieldnames + ['custom_attribute']
writer = csv.DictWriter(outfile, fieldnames=fieldnames)
writer.writeheader()
for row in reader:
transformed_row = transformar_datos(row)
writer.writerow(transformed_row)
print("Transformación completada. Archivo: usuarios_transformados.csv")
Paso 3: Importación de datos
Finalmente, utiliza la API de Microsoft Graph para crear usuarios en Azure AD B2C. Aquí tienes un ejemplo básico utilizando Python y la librería requests:
import requests
import csv
# Configuración de la API
tenant_id = 'tu_tenant_id'
client_id = 'tu_client_id'
client_secret = 'tu_client_secret'
graph_url = f'https://graph.microsoft.com/v1.0/{tenant_id}/users'
# Autenticación
def obtener_token():
token_url = f'https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token'
data = {
'client_id': client_id,
'client_secret': client_secret,
'scope': 'https://graph.microsoft.com/.default',
'grant_type': 'client_credentials'
}
response = requests.post(token_url, data=data)
return response.json().get('access_token')
token = obtener_token()
# Importación de usuarios
with open('usuarios_transformados.csv', 'r', encoding='utf-8') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
user_data = {
"accountEnabled": True,
"displayName": row['username'],
"mailNickname": row['username'],
"userPrincipalName": row['email'],
"passwordProfile": {
"password": "ContraseñaTemporal123!",
"forceChangePasswordNextSignIn": True
}
}
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
}
response = requests.post(graph_url, json=user_data, headers=headers)
if response.status_code == 201:
print(f"Usuario {row['username']} creado exitosamente.")
else:
print(f"Error al crear usuario {row['username']}: {response.text}")
Note: Utiliza contraseñas temporales para los usuarios migrados y habilita la opción de cambio obligatorio en el próximo inicio de sesión.
Conclusión
La migración de usuarios a Azure AD B2C es un proceso técnico que requiere planificación y ejecución cuidadosa. El repositorio de GitHub azure-ad-b2c/user-migration proporciona ejemplos valiosos para simplificar esta tarea. Siguiendo los pasos descritos en este artículo, puedes realizar la migración de manera eficiente y segura.
Para explorar más sobre cómo GitHub impulsa la innovación en la nube, revisa los siguientes artículos relacionados:
- XLLM: Motor de inferencia de alto rendimiento para modelos GLM en GitHub
- Automatización de triage de issues en GitHub con el SDK de Copilot
- Azure AI Landing Zones: Arquitectura de referencia para IA en la nube
- GraphRAG: Fundamentos y novedades en el sistema modular de RAG basado en grafos
- GitHub amplía la seguridad de aplicaciones con detecciones impulsadas por IA
Warning: Este artículo asume que ya tienes experiencia previa con Azure AD B2C y APIs REST. Si eres nuevo en estos temas, te recomendamos revisar la documentación oficial de Microsoft.