Använda en anpassad multifaktorautentiseringsprovider via ett API under PAM-rollaktivering eller i SSPR

MIM-kunder har två alternativ för multifaktorautentisering i SSPR- och PAM-scenarierna:

  • Använd en anpassad leveransprovider för engångslösenord, som endast gäller i MIM SSPR-scenariot och som beskrivs i guiden Konfigurera Self-Service lösenordsåterställning med OTP SMS Gate
  • Använd en anpassad leverantör för multifaktorautentiseringstelefoni. Detta gäller både i MIM SSPR- och PAM-scenarierna, som beskrivs i den här artikeln

Den här artikeln beskriver hur du använder MIM med en anpassad multifaktorautentiseringsprovider, via ett API och en integrerings-SDK som utvecklats av kunden.

Förutsättningar

För att kunna använda ett anpassat API för multifaktorautentiseringsprovider med MIM behöver du:

  • telefonnummer till alla kandidatanvändare
  • MIM-snabbkorrigering 4.5.202.0 eller senare – se versionshistorik för meddelanden
  • MIM-tjänst konfigurerad för SSPR eller PAM

Metod för att använda anpassad kod för multifaktorautentisering

Steg 1: Kontrollera att MIM-tjänsten har version 4.5.202.0 eller senare

Ladda ned och installera MIM-snabbkorrigering 4.5.202.0 eller en senare version.

Steg 2: Skapa en DLL som implementerar gränssnittet IPhoneServiceProvider

DLL:en måste innehålla en klass som implementerar tre metoder:

  • InitiateCall: MIM-tjänsten anropar den här metoden. Tjänsten skickar telefonnumret och begärande-ID:t som parametrar. Metoden måste returnera värdet PhoneCallStatusPending, Success eller Failed.
  • GetCallStatus: Om ett tidigare anrop till initiateCall returnerade Pendinganropar MIM-tjänsten den här metoden. Den här metoden returnerar PhoneCallStatus också värdet Pending, Success eller Failed.
  • GetFailureMessage: Om ett tidigare anrop av InitiateCall eller GetCallStatus returnerades Failedanropar MIM-tjänsten den här metoden. Den här metoden returnerar ett diagnostikmeddelande.

Implementeringarna av dessa metoder måste vara trådsäkra och dessutom måste implementeringen av GetCallStatus och GetFailureMessage inte förutsätta att de anropas av samma tråd som ett tidigare anrop till InitiateCall.

Lagra DLL:en i C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\ katalogen.

Exempelkod som kan kompileras med Visual Studio 2010 eller senare.

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;    
        }
    }
}

Steg 3: Spara befintliga MfaSettings

Säkerhetskopiera MfaSettings.xml som finns i mappen "C:\Program Files\Microsoft Forefront Identity Manager\2010\Service".

Steg 4: Redigera filen MfaSettings.xml

Uppdatera eller avmarkera följande rader:

  • Ta bort/rensa alla konfigurationsposter

  • Uppdatera eller lägg till följande rader i följande för att MfaSettings.xml med din anpassade telefonleverantör
    <CustomPhoneProvider>C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\CustomPhoneGate.dll</CustomPhoneProvider>

Steg 5: Starta om MIM-tjänsten

När tjänsten har startats om använder du SSPR och/eller PAM för att verifiera funktioner med den anpassade identitetsprovidern.

Anteckning

Om du vill återställa inställningen ersätter du MfaSettings.xml med säkerhetskopieringsfilen i steg 3

Nästa steg