Partilhar via


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 um PhoneCallStatus valor de Pending, Success ou Failed.
  • GetCallStatus: Se uma chamada anterior para initiateCall devolver Pending, o Serviço MIM invocará este método. Este método também devolve PhoneCallStatus valor de Pending, Success ou Failed.
  • GetFailureMessage: Se uma invocação prévia ou InitiateCallGetCallStatus devolvida Failed, 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

Passos Seguintes