Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los clientes de MIM tienen dos opciones para la autenticación multifactor en los escenarios SSPR y PAM:
- Use un proveedor de entrega de contraseña única personalizado, que solo es aplicable en el escenario de SSPR de MIM y se documenta en la guía para configurar Self-Service restablecimiento de contraseña con la puerta de SMS de OTP.
- Use un proveedor de telefonía de autenticación multifactor personalizado. Esto es aplicable en los escenarios SSPR y PAM de MIM, que se describen en este artículo.
En este artículo se describe cómo usar MIM con un proveedor de autenticación multifactor personalizado, a través de una API y un SDK de integración desarrollado por el cliente.
Prerrequisitos
Para usar una API de proveedor de autenticación multifactor personalizada con MIM, necesita:
- Números de teléfono para todos los usuarios candidatos
- Revisión urgente de MIM 4.5.202.0 o posterior: consulte el historial de versiones para anuncios.
- Servicio MIM configurado para SSPR o PAM
Método de autenticación multifactor con un código personalizado
Paso 1: Asegurarse de que el servicio MIM está en la versión 4.5.202.0 o posterior
Descargue e instale el hotfix de MIM 4.5.202.0 o una versión posterior.
Paso 2: Crear un archivo DLL que implemente la interfaz IPhoneServiceProvider
El archivo DLL debe incluir una clase , que implementa tres métodos:
-
InitiateCall: el servicio MIM invocará este método. El servicio pasa el número de teléfono y el identificador de solicitud como parámetros. El método debe devolver unPhoneCallStatusvalor dePending,SuccessoFailed. -
GetCallStatus: Si una llamada anterior ainitiateCalldevolvióPending, el servicio MIM invocará este método. Este método también devuelvePhoneCallStatusel valor dePending,SuccessoFailed. -
GetFailureMessage: si una invocación anterior deInitiateCalloGetCallStatusdevueltaFailed, el servicio MIM invocará este método. Este método devuelve un mensaje de diagnóstico.
Las implementaciones de estos métodos deben ser seguras para subprocesos y, además, la implementación de GetCallStatus y GetFailureMessage no debe suponer que serán llamadas por el mismo subproceso que realizó una llamada anterior a InitiateCall.
Almacene el archivo DLL en el C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\ directorio .
Código de ejemplo, que se puede compilar con Visual Studio 2010 o posterior.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using Microsoft.IdentityManagement.PhoneServiceProvider;
namespace CustomPhoneGate
{
public class CustomPhoneGate: IPhoneServiceProvider
{
string path = @"c:\Test\phone.txt";
public PhoneCallStatus GetCallStatus(string callId)
{
int res = 2;
foreach (string line in File.ReadAllLines(path))
{
var info = line.Split(new char[] { ';' });
if (string.Compare(info[0], callId) == 0)
{
if (info.Length > 2)
{
bool b = Int32.TryParse(info[2], out res);
if (!b)
{
res = 2;
}
}
break;
}
}
switch(res)
{
case 0:
return PhoneCallStatus.Pending;
case 1:
return PhoneCallStatus.Success;
case 2:
return PhoneCallStatus.Failed;
default:
return PhoneCallStatus.Failed;
}
}
public string GetFailureMessage(string callId)
{
string res = "Call ID is not found";
foreach (string line in File.ReadAllLines(path))
{
var info = line.Split(new char[] { ';' });
if (string.Compare(info[0], callId) == 0)
{
if (info.Length > 2)
{
res = info[3];
}
else
{
res = "Description is not found";
}
break;
}
}
return res;
}
public PhoneCallStatus InitiateCall(string phoneNumber, Guid requestId, Dictionary<string,object> deliveryAttributes)
{
// Here should be some logic for performing voice call
// For testing purposes we just write details in file
string info = string.Format("{0};{1};{2};{3}", requestId, phoneNumber, 0, string.Empty);
using (StreamWriter sw = File.AppendText(path))
{
sw.WriteLine(info);
}
return PhoneCallStatus.Pending;
}
}
}
Paso 3: Guardar los MfaSettings existentes
Realice una copia de seguridad del MfaSettings.xml ubicado en la carpeta "C:\Archivos de programa\Microsoft Forefront Identity Manager\2010\Service".
Paso 4: Editar el archivo de MfaSettings.xml
Actualice o borre las líneas siguientes:
Quitar o borrar todas las líneas de entradas de configuración
Actualice o agregue las siguientes líneas a lo siguiente para MfaSettings.xml con el proveedor de teléfono personalizado
<CustomPhoneProvider>C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\CustomPhoneGate.dll</CustomPhoneProvider>
Paso 5: Reiniciar el servicio MIM
Una vez reiniciado el servicio, use SSPR o PAM para validar la funcionalidad con el proveedor de identidades personalizado.
Nota:
Para revertir la configuración, reemplace MfaSettings.xml por el archivo de copia de seguridad en el paso 3