Dela via


Använd en anpassad multifaktorautentiseringsleverantör via ett API under aktivering av PAM-roll eller i självbetjäning för återställning av lösenord (SSPR).

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

  • Använd en anpassad leverantör för engångslösenordsleverans, som endast gäller i MIM SSPR-scenariot och dokumenteras i guide för att Konfigurera Self-Service lösenordsåterställning med OTP SMS Gate
  • Använd en anpassad telefoniprovider för multifaktorautentisering. 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 ett 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 för alla kandidatanvändare
  • MIM-snabbkorrigering 4.5.202.0 eller senare – se versionshistorik för tillkännagivanden
  • MIM-tjänsten har konfigurerats för SSPR eller PAM

Metod med anpassad kod för multifaktorautentisering

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

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

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

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

  • InitiateCall: MIM-tjänsten anropar den här metoden. Tjänsten skickar telefonnummer och begärande-ID som parametrar. Metoden måste returnera ett PhoneCallStatus-värde av Pending, Success eller Failed.
  • GetCallStatus: Om ett tidigare anrop till initiateCall returnerade Pendinganropar MIM-tjänsten den här metoden. Den här metoden returnerar också PhoneCallStatus värdet för Pending, Success eller Failed.
  • GetFailureMessage: Om ett tidigare anrop av InitiateCall eller GetCallStatus returnerade 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 får 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 katalogen C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\.

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 i mappen "C:\Program Files\Microsoft Forefront Identity Manager\2010\Service".

Step 4: Edit the MfaSettings.xml file

Uppdatera eller rensa följande rader:

  • Remove/Clear all configuration entries lines

  • Update or add the following lines to the following to MfaSettings.xml with your custom phone provider
    <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.

Anmärkning

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

Nästa steg