Uso de un proveedor de autenticación multifactor personalizado a través de una API durante la activación de roles de PAM o en SSPR
Los clientes de MIM tienen dos opciones para la autenticación multifactor en los escenarios de SSPR y PAM:
- Usar un proveedor de entrega de contraseña de un solo uso, que es aplicable únicamente en el escenario de SSPR de MIM y se documenta en la guía Configure Self-Service Password Reset with OTP SMS Gate (Configurar Autoservicio de restablecimiento de contraseña con Puerta de SMS de OTP).
- Usar un proveedor de telefonía de autenticación multifactor personalizada. Esto es aplicable en los escenarios de PAM y SSPR de MIM que se describen en este artículo.
En este artículo se describe cómo usar MIM con un proveedor personalizado de Multi-Factor Authentication, a través de una API y un SDK de integración desarrollado por el cliente.
Requisitos previos
Para usar una API de proveedor de autenticación multifactor personalizada con MIM, necesita:
- Números de teléfono de todos los usuarios candidatos.
- Revisión 4.5.202.0 o posterior de MIM; consulte el historial de versiones para ver los anuncios.
- Servicio MIM configurado para SSPR o PAM.
Método mediante el código de autenticación multifactor personalizada
Paso 1: Asegurarse de que la versión del servicio MIM es 4.5.202.0 o posterior
Descargue e instale la revisión 4.5.202.0 de MIM (o una versión posterior).
Paso 2: Crear un archivo DLL que implemente la interfaz IPhoneServiceProvider
El archivo DLL debe incluir una clase que implemente tres métodos:
InitiateCall
: el servicio MIM invocará este método. El servicio pasa el identificador de solicitud y el número de teléfono como parámetros. El método debe devolver un valorPhoneCallStatus
dePending
,Success
oFailed
.GetCallStatus
: si una llamada anterior ainitiateCall
devolvióPending
, el servicio MIM invocará este método. Este método también devuelve el valorPhoneCallStatus
dePending
,Success
oFailed
.GetFailureMessage
: si una llamada anterior aInitiateCall
oGetCallStatus
devolvióFailed
, 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 se llamarán mediante el mismo subproceso que una llamada anterior a InitiateCall
.
Guarde el archivo DLL en el directorio C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\
.
Código de ejemplo que puede ser compilado mediante 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 MfaSettings.xml
Actualice o desactive las líneas siguientes:
Quite o borre todas las líneas de entradas de configuración
Actualice o agregue las líneas siguientes al MfaSettings.xml siguiente con su 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 y/o PAM para validar las funciones con el proveedor de identidades personalizado.
Nota:
Para revertir la configuración, reemplace MfaSettings.xml con el archivo de copia de seguridad en el paso 3.
Pasos siguientes
- MIM version release history (Historial de lanzamiento de versiones de MIM)