Files
CRM_AGENTES_CARGA/docs/VERIFICAR_MICROSOFT_CONFIG.md

5.3 KiB

Verificar Configuración de Microsoft en Keycloak

Paso 1: Verificar si Microsoft está configurado

Abre tu navegador y ve a:

http://localhost:8080/admin/master/console/#/master/identity-providers

Login: admin / admin

¿Qué deberías ver?

Si Microsoft está configurado, verás en la lista de Identity Providers:

  • microsoft (o el alias que hayas usado)
  • Con estado: Enabled

Si NO ves "microsoft" en la lista:

¡Necesitas configurarlo! Sigue estos pasos:


Paso 2: Configurar Microsoft en Keycloak (SI NO ESTÁ CONFIGURADO)

2.1 Crear App en Azure AD PRIMERO

Antes de configurar Keycloak, necesitas una aplicación en Azure:

  1. Ve a Azure Portal

  2. Busca Azure Active Directory o Microsoft Entra ID

  3. App registrationsNew registration

  4. Configura:

    • Name: Anexo76
    • Supported account types: Accounts in any organizational directory (Any Azure AD - Multitenant)
    • Redirect URI:
      • Platform: Web
      • URI: http://localhost:8080/realms/master/broker/microsoft/endpoint
    • Click Register
  5. Copia el Application (client) ID - lo necesitarás

  6. Ve a Certificates & secretsNew client secret

    • Descripción: keycloak
    • Expira: 24 meses
    • Click Add
    • ¡COPIA EL SECRET VALUE AHORA! (solo se muestra una vez)

2.2 Agregar Microsoft a Keycloak

  1. En Keycloak Admin Console: http://localhost:8080
  2. Login: admin / admin
  3. Menú lateral: Identity providers
  4. Dropdown: Add provider → Selecciona Microsoft
  5. Configura:
Alias: microsoft
Display name: Microsoft
Enabled: ON ✅
Store tokens: ON ✅
Trust email: ON ✅
First login flow: first broker login

Client ID: [PEGA TU APPLICATION ID DE AZURE]
Client Secret: [PEGA TU SECRET DE AZURE]
  1. Click Save
  2. Ve a la pestaña Mappers y agrega estos 4 mappers:

Mapper 1: email

Name: email
Mapper type: Attribute Importer
Social profile JSON field path: email
User attribute name: email

Mapper 2: firstName

Name: firstName
Mapper type: Attribute Importer
Social profile JSON field path: given_name
User attribute name: firstName

Mapper 3: lastName

Name: lastName
Mapper type: Attribute Importer
Social profile JSON field path: family_name
User attribute name: lastName

Mapper 4: username

Name: username
Mapper type: Username Template Importer
Template: ${CLAIM.email}
Target: BROKER_USERNAME

Paso 4: Verificar en tu App

  1. Asegúrate de que el frontend esté corriendo: http://localhost:5173
  2. Ve a la página de login: http://localhost:5173/login
  3. Ingresa un tenant (ej: aduanasoft)
  4. Click en el botón "Iniciar sesión con Microsoft"

¿Qué debería pasar?

Correcto:

  • Te redirige a Microsoft login
  • Ves la página de Microsoft pidiendo tu email/contraseña
  • Después de autenticarte, vuelves a tu app

Incorrecto (lo que te está pasando ahora):

  • Te lleva a la página de login de Keycloak
  • Ves el usuario "admin" ya logueado

Troubleshooting Común

Error: "Identity provider not found"

  • El alias en Keycloak debe ser exactamente microsoft (minúsculas)
  • O cambia el código: loginWithProvider('TU_ALIAS_EXACTO')

Error: redirect_uri_mismatch en Azure

  • La URI en Azure debe ser EXACTAMENTE:
    http://localhost:8080/realms/master/broker/microsoft/endpoint
    
  • Nota el /endpoint al final

Error: Unexpected error when authenticating with identity provider

docker cp azure.crt anexo76-keycloak:/
docker exec -it -u root anexo76-keycloak /bin/bash

keytool -importcert -trustcacerts -file /azure.crt \
-keystore /etc/java/java-21-openjdk/java-21-openjdk-21.0.8.0.9-1.el9.x86_64/lib/security/cacerts \
-alias azure-root -storepass changeit -noprompt

Me redirige pero muestra error en Microsoft

  • Verifica que el Client ID y Secret en Keycloak sean correctos
  • Verifica que la app en Azure esté habilitada

Funciona pero el usuario no tiene tenant_id

  • Esto es normal en el primer login
  • Puedes configurar un mapper adicional o manejarlo en tu backend

Comando Rápido de Verificación

Ejecuta esto en una terminal:

# Verificar si el endpoint del broker existe
curl -s -o /dev/null -w "%{http_code}" "http://localhost:8080/realms/master/broker/microsoft/login?client_id=test&redirect_uri=http://localhost"

Resultados:

  • 302 = Microsoft está configurado (redirige a Microsoft)
  • 404 = Microsoft NO está configurado en Keycloak
  • 500 = ⚠️ Hay un error de configuración

Resumen Rápido

Para que funcione necesitas:

  1. App Registration en Azure AD con Client ID y Secret
  2. Identity Provider "microsoft" configurado en Keycloak
  3. Redirect URI en Azure: http://localhost:8080/realms/master/broker/microsoft/endpoint
  4. Variables de entorno en frontend (.env):
    VITE_KEYCLOAK_URL=http://localhost:8080
    VITE_KEYCLOAK_REALM=master
    VITE_KEYCLOAK_CLIENT_ID=anexo76-frontend
    

El flujo correcto es:

Tu App → Keycloak Broker → Microsoft Login → Keycloak → Tu App

Lo que está pasando ahora:

Tu App → Keycloak Login (porque no encuentra el provider)

¿Necesitas ayuda con la configuración? Primero verifica en Keycloak Admin Console si existe el Identity Provider "microsoft".