Última hora: Keyfactor adquiere InfoSec Global y CipherInsights | Soluciones integrales para descubrimiento, control y agilidad

  • Inicio
  • Blog
  • Autenticación de dos factores mediante mensajería SMS para FIM 2010

Autenticación de dos factores mediante mensajería SMS para FIM 2010

Recientemente he trabajado en una solución personalizada de restablecimiento de contraseñas de autoservicio (SSPR) aprovechando FIM 2010 R2. La funcionalidad SSPR proporcionada por FIM 2010 R2 es bastante completa. En las sesiones de diseño con el cliente, decidieron que querían utilizar un mayor nivel de seguridad para que los usuarios de Internet pudieran restablecer sus contraseñas. Esto sin duda tiene sentido: exponer una interfaz en la que los usuarios corporativos puedan restablecer sus contraseñas es una gran ayuda para la mesa de servicio, pero introduce una superficie de amenaza significativa y un riesgo de seguridad asociado.

Lo que tenemos que hacer es asegurarnos de que la persona que restablece la contraseña es realmente el usuario y no una persona o agente malintencionado. El principal método de autenticación para el restablecimiento consiste en que el usuario responda a una serie de preguntas cuya respuesta sólo él conoce. Hoy en día, este método se utiliza con bastante frecuencia. Sin embargo, esto satisface sólo un mecanismo de autenticación (llamado "factor"), algo que el usuario conoce. La seguridad es mayor si se añade otro factor: por ejemplo, algo (físico) que el usuario tenga en su poder.

Un método similar, pero no precisamente de dos factores, consiste en aprovechar un canal "fuera de banda" para enviar un código al usuario, que éste introducirá una sola vez, durante ese restablecimiento de contraseña concreto. No es de extrañar que esto se denomine contraseña de un solo uso (OTP). Un canal obvio y con diferencia el más común es enviar esta contraseña de un solo uso a la dirección de correo electrónico personal del usuario. (Podríamos considerar la "posesión" de la dirección de correo electrónico personal y el acceso a ella como un factor, pero no es lo mismo que tener una tarjeta inteligente física, un llavero o un dongle). Sin embargo, el teléfono móvil de un usuario es definitivamente un factor físico que presumiblemente el usuario mantendrá en su posesión.

Afortunadamente, la función SSPR de FIM tiene la capacidad de enviar una OTP, y puede enviarla de varias maneras a través de un código de extensión personalizado. Los usuarios pueden ser desafiados con una contraseña de un solo uso, ya sea a través de una dirección de correo electrónico alternativa o por un mensaje de texto SMS. El mensaje de texto es lo que decidimos que era la mejor opción para la organización.

Entonces, ¿cómo puede la FIM enviar mensajes SMS? Bueno, necesitamos un proveedor de servicios SMS que pueda recibir y enrutar los mensajes adecuadamente. Uno de estos proveedores basados en Internet es Twilio. Twilio ofrece un servicio web RESTful y una API publicada que permite una fácil integración con las aplicaciones. Me impresionó mucho la sencillez y el rendimiento de su API de SMS. El precio también es muy atractivo. Esto va más allá del alcance de este artículo, pero me atrevería a decir que cualquier organización puede permitírselo.

Entonces, ¿cómo hacemos que esto funcione con FIM? Bueno, FIM proporciona una interfaz a través del ensamblado Microsoft.IdentityManagement.SmsServiceProviderContract incluido con FIM. El proceso se describe en este artículo de TechNet.

Veamos un ejemplo de cómo utilizar la API de Twilio:

utilizando Twilio;

clase Ejemplo

{

static void Main(string[] args)

{

// your Account Sid and Auth Token are found in your account information online

string AccountSid = " BD7eb96075d6bf7377c05f8bcf25a5294b";

cadena AuthToken = "";

var twilio = new TwilioRestClient(AccountSid, AuthToken);

var message = twilio.SendMessage(“+14158141829”, “+15558675309”, “Jenny please?! I love you <3”, newstring[] {“https://www.example.com/hearts.png”});

Console.WriteLine(mensaje.Sid);

}

}

Es así de fácil, y esa es una de las razones por las que elegimos Twilio frente a otras opciones.

Así pues, para FIM SSPR, necesitamos crear la dll SmsServiceProvider que FIM utilizará y aprovechar esta API. El código relevante se parece a esto:

using Microsoft.IdentityManagement.SmsServiceProvider;

utilizando Twilio;

public class SmsServiceProvider : ISmsServiceProvider

{

public void SendSms(cadena mobileNumber,

mensaje de cadena,

Guid requestId,

Dictionary<string, object> deliveryAttributes)

{

mySMSProvider.SendSms(mobileNumber, message);

}

}

clase mySMSProvider

{

static string AccountSid = "BD7eb96075d6bf7377c05f8bcf25a5294b";

cadena estática AuthToken = "58a93f5d342e842dc572ab131af83757";

miSMSProvider()

{

}

public static int EnviarSms(cadena usuarioNúmeroMóvil, cadena mensaje)

{

Int32 resultado;

error de cadena;

// instantiate a new Twilio Rest Client

var client = new TwilioRestClient(AccountSid, AuthToken);

var transaction = client.SendMessage(

"678-967-4113", // Número "De", debe ser un número Twilio habilitado para SMS

userMobileNumber, // Número "Para", si usa Sandbox vea la nota anterior

// message content, passed in as a parameter from FIM

mensaje);

}

...

También tenemos que crear un flujo de trabajo de restablecimiento de contraseña que utilice la puerta OTP y manejar algunos otros detalles de configuración, por supuesto.

Sabemos que la sofisticación de los ataques automatizados, las técnicas de descifrado de contraseñas y la frecuencia de esos ataques sobre objetivos de alto valor, es más importante que nunca para una organización equilibrar operaciones eficientes con medidas de seguridad adecuadas. La frecuencia de las brechas de seguridad observadas recientemente apunta claramente a la necesidad de una autenticación fuerte, como las contraseñas de un solo uso, en los SSPR.