Delen via


Een aangepaste multi-factor authentication-provider gebruiken via een API tijdens het activeren van PAM-rollen of in SSPR

MIM-klanten hebben twee opties voor meervoudige verificatie in de SSPR- en PAM-scenario's:

  • Gebruik een aangepaste eenmalige leveringsprovider voor wachtwoorden, die alleen van toepassing is in het MIM SSPR-scenario en wordt beschreven in de handleiding voor het configureren van Self-Service wachtwoordherstel met OTP SMS Gate
  • Gebruik een aangepaste telefonieprovider voor meervoudige verificatie. Dit is van toepassing in de MIM SSPR- en PAM-scenario's, zoals beschreven in dit artikel

In dit artikel wordt beschreven hoe u MIM gebruikt met een aangepaste multi-factor authentication-provider, via een API en een integratie-SDK die door de klant is ontwikkeld.

Vereisten

Als u een aangepaste PROVIDER-API voor meervoudige verificatie wilt gebruiken met MIM, hebt u het volgende nodig:

  • Telefoonnummers voor alle kandidaatgebruikers
  • MIM-hotfix 4.5.202.0 of hoger: bekijk de versiegeschiedenis voor aankondigingen
  • MIM-service geconfigureerd voor SSPR of PAM

Benadering met behulp van aangepaste multi-factor authentication-code

Stap 1: Zorg ervoor dat de MIM-service versie 4.5.202.0 of hoger heeft

Download en installeer MIM hotfix 4.5.202.0 of een nieuwere versie.

Stap 2: Een DLL maken die de IPhoneServiceProvider-interface implementeert

Het DLL-bestand moet een klasse bevatten die drie methoden implementeert:

  • InitiateCall: de MIM-service roept deze methode aan. De service geeft het telefoonnummer en de aanvraag-id door als parameters. De methode moet een PhoneCallStatus waarde van Pending, Success of Failed.
  • GetCallStatus: Als een eerdere aanroep die moet worden initiateCallPendinggeretourneerd, roept de MIM-service deze methode aan. Deze methode retourneert PhoneCallStatus ook de waarde van Pending, Success of Failed.
  • GetFailureMessage: Als een eerdere aanroep van InitiateCall of GetCallStatus geretourneerd Failed, roept de MIM-service deze methode aan. Met deze methode wordt een diagnostisch bericht geretourneerd.

De implementaties van deze methoden moeten thread-veilig zijn, en bovendien de implementatie van de GetCallStatus en GetFailureMessage mag er niet van uitgaan dat ze worden aangeroepen door dezelfde thread als een eerdere aanroep naar InitiateCall.

Sla het DLL-bestand op in de C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\ map.

Voorbeeldcode, die kan worden gecompileerd met Visual Studio 2010 of hoger.

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

Stap 3: de bestaande MfaSettings opslaan

Maak een back-up van de MfaSettings.xml in de map C:\Program Files\Microsoft Forefront Identity Manager\2010\Service.

Stap 4: het MfaSettings.xml-bestand bewerken

Werk de volgende regels bij of wis deze:

  • Alle configuratievermeldingen verwijderen/wissen

  • Werk de volgende regels bij of voeg de volgende regels toe aan MfaSettings.xml met uw aangepaste telefoonprovider
    <CustomPhoneProvider>C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\CustomPhoneGate.dll</CustomPhoneProvider>

Stap 5: MIM-service opnieuw starten

Nadat de service opnieuw is opgestart, gebruikt u SSPR en/of PAM om de functionaliteit te valideren bij de aangepaste id-provider.

Notitie

Als u de instelling wilt terugzetten, vervangt u MfaSettings.xml door uw back-upbestand in stap 3

Volgende stappen