Utilize um fornecedor personalizado de autenticação de vários fatores através de uma API durante a ativação de funções PAM ou em SSPR
Os clientes MIM têm duas opções para a autenticação de vários fatores nos cenários SSPR e PAM:
- Utilize um fornecedor de entrega de senha de uma única vez personalizado, que é aplicável apenas no cenário MIM SSPR e documentado no guia para configurar Self-Service Password Reset com Portão SMS OTP
- Utilize um fornecedor personalizado de autenticação de vários fatores. Isto é aplicável tanto nos cenários MIM SSPR e PAM, descritos neste artigo
Este artigo descreve como utilizar a MIM com um fornecedor personalizado de autenticação multi-fator, através de uma API e de uma SDK de integração desenvolvida pelo cliente.
Pré-requisitos
Para utilizar um fornecedor personalizado de autenticação multi-factor API com MIM, você precisa:
- Números de telefone para todos os utilizadores candidatos
- Mim hotfix 4.5.202.0 ou mais tarde - ver histórico da versão para anúncios
- Serviço MIM configurado para SSPR ou PAM
Abordagem usando código de autenticação de vários fatores personalizados
Passo 1: Certifique-se de que o Serviço MIM está na versão 4.5.202.0 ou mais tarde
Faça o download e instale o hotfix MIM 4.5.202.0 ou uma versão posterior.
Passo 2: Criar um DLL que implementa a interface iPhoneServiceProvider
O DLL deve incluir uma classe, que implementa três métodos:
InitiateCall
: O Serviço MIM invocará este método. O serviço passa o número de telefone e solicita identificação como parâmetros. O método deve devolver umPhoneCallStatus
valor dePending
,Success
ouFailed
.GetCallStatus
: Se uma chamada anterior parainitiateCall
devolverPending
, o Serviço MIM invocará este método. Este método também devolvePhoneCallStatus
valor dePending
,Success
ouFailed
.GetFailureMessage
: Se uma invocação prévia ouInitiateCall
GetCallStatus
devolvidaFailed
, o Serviço MIM invocará este método. Este método devolve uma mensagem de diagnóstico.
As implementações destes métodos devem ser seguras e, além disso, a implementação do GetCallStatus
e GetFailureMessage
não devem assumir que serão chamadas pelo mesmo fio que uma chamada anterior para InitiateCall
.
Guarde o DLL no C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\
diretório.
Código de amostra, que pode ser compilado usando Visual Studio 2010 ou mais tarde.
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;
}
}
}
Passo 3: Salvar os MfaSettings existentes
O back up da MfaSettings.xml localizado na pasta "C:\Program Files\Microsoft Forefront Identity Manager\2010\Service".
Passo 4: Editar o ficheiro MfaSettings.xml
Atualizar ou limpar as seguintes linhas:
Remover/Limpar todas as linhas de entradas de configuração
Atualizar ou adicionar as seguintes linhas ao seguinte para MfaSettings.xml com o seu fornecedor de telefone personalizado
<CustomPhoneProvider>C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\CustomPhoneGate.dll</CustomPhoneProvider>
Passo 5: Reiniciar o serviço MIM
Depois de o serviço ter sido reiniciado, utilize a SSPR e/ou a PAM para validar a funcionalidade com o fornecedor de identidade personalizado.
Nota
Para reverter a definição substitua MfaSettings.xml pelo seu ficheiro de backup no passo 3