Udostępnij za pośrednictwem


Używanie niestandardowego dostawcy uwierzytelniania wieloskładnikowego za pośrednictwem interfejsu API podczas aktywacji roli usługi PAM lub samoobsługowego resetowania hasła

Klienci programu MIM mają dwie opcje uwierzytelniania wieloskładnikowego w scenariuszach samoobsługowego resetowania hasła i usługi PAM:

  • Użyj niestandardowego dostawcy dostarczania haseł jednorazowych, który ma zastosowanie tylko w scenariuszu samoobsługowego resetowania hasła programu MIM i udokumentowany w przewodniku Konfigurowanie resetowania haseł Self-Service za pomocą bramy programu OTP SMS
  • Użyj niestandardowego dostawcy telefonii uwierzytelniania wieloskładnikowego. Dotyczy to zarówno scenariuszy samoobsługowego resetowania hasła programu MIM, jak i funkcji PAM opisanych w tym artykule

W tym artykule opisano sposób używania programu MIM z niestandardowym dostawcą uwierzytelniania wieloskładnikowego za pośrednictwem interfejsu API i zestawu SDK integracji opracowanego przez klienta.

Wymagania wstępne

Aby używać niestandardowego interfejsu API dostawcy uwierzytelniania wieloskładnikowego z programem MIM, potrzebne są następujące elementy:

  • Numery telefonów wszystkich użytkowników kandydujących
  • Poprawka programu MIM 4.5.202.0 lub nowsza — zobacz historię wersji anonsów
  • Usługa MIM skonfigurowana dla samoobsługowego resetowania hasła lub usługi PAM

Podejście przy użyciu niestandardowego kodu uwierzytelniania wieloskładnikowego

Krok 1. Upewnij się, że usługa MIM jest w wersji 4.5.202.0 lub nowszej

Pobierz i zainstaluj poprawkę programu MIM 4.5.202.0 lub nowszą.

Krok 2. Tworzenie biblioteki DLL implementujących interfejs IPhoneServiceProvider

Biblioteka DLL musi zawierać klasę, która implementuje trzy metody:

  • InitiateCall: Usługa MIM wywoła tę metodę. Usługa przekazuje numer telefonu i identyfikator żądania jako parametry. Metoda musi zwrócić PhoneCallStatus wartość Pendingtypu , Success lub Failed.
  • GetCallStatus: Jeśli wcześniejsze wywołanie initiateCall metody zwróci wartość Pending, usługa MIM wywoła tę metodę. Ta metoda zwraca PhoneCallStatus również wartość Pendingtypu , Success lub Failed.
  • GetFailureMessage: Jeśli poprzednie wywołanie InitiateCall metody lub GetCallStatus zwróci Failedwartość , usługa MIM wywoła tę metodę. Ta metoda zwraca komunikat diagnostyczny.

Implementacje tych metod muszą być bezpieczne wątkami, a ponadto implementacja GetCallStatus elementu i GetFailureMessage nie może zakładać, że będą one wywoływane przez ten sam wątek co wcześniejsze wywołanie metody InitiateCall.

Zapisz bibliotekę DLL w C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\ katalogu .

Przykładowy kod, który można skompilować przy użyciu programu Visual Studio 2010 lub nowszego.

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

Krok 3. Zapisywanie istniejących ustawień MfaSettings

Należy utworzyć kopię zapasową MfaSettings.xml znajdującą się w folderze "C:\Program Files\Microsoft Forefront Identity Manager\2010\Service".

Krok 4. Edytowanie pliku MfaSettings.xml

Zaktualizuj lub wyczyść następujące wiersze:

  • Usuń/wyczyść wszystkie wiersze wpisów konfiguracji

  • Zaktualizuj lub dodaj następujące wiersze, aby MfaSettings.xml z niestandardowym dostawcą telefonu
    <CustomPhoneProvider>C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\CustomPhoneGate.dll</CustomPhoneProvider>

Krok 5. Ponowne uruchamianie usługi MIM

Po ponownym uruchomieniu usługi użyj samoobsługowego resetowania hasła i/lub usługi PAM, aby zweryfikować funkcjonalność u niestandardowego dostawcy tożsamości.

Uwaga

Aby przywrócić ustawienie, zastąp MfaSettings.xml plikiem kopii zapasowej w kroku 3

Następne kroki