Freigeben über


Verwenden eines benutzerdefinierten mehrstufigen Authentifizierungsanbieters über eine API während der PAM-Rollenaktivierung oder in SSPR

MIM-Kunden haben zwei Optionen für die mehrstufige Authentifizierung in den SSPR- und PAM-Szenarien:

In diesem Artikel wird beschrieben, wie Sie MIM mit einem benutzerdefinierten Multi-Factor Authentication-Anbieter über eine API und ein vom Kunden entwickeltes SDK für die Integration verwenden.

Voraussetzungen

Um eine benutzerdefinierte mehrstufige Authentifizierungsanbieter-API mit MIM zu verwenden, benötigen Sie Folgendes:

  • Telefonnummern für alle Kandidatenbenutzer
  • MIM-Hotfix 4.5.202.0 oder höher: siehe Ankündigungen im Versionsverlauf
  • MIM-Dienst für SSPR oder PAM konfiguriert

Vorgehensweise mithilfe von Code für benutzerdefinierte mehrstufige Authentifizierung

Schritt 1: Stellen Sie sicher, dass der MIM-Dienst die Version 4.5.202.0 oder höher aufweist.

Laden Sie den MIM-Hotfix 4.5.202.0 oder höher herunter, und installieren Sie diesen.

Schritt 2: Erstellen Sie eine DLL, die die IPhoneServiceProvider-Schnittstelle implementiert.

Die DLL muss eine Klasse enthalten, die drei Methoden implementiert:

  • InitiateCall: Der MIM-Dienst ruft diese Methode auf. Der Dienst übergibt die Telefonnummer und Anforderung-ID als Parameter. Die Methode muss für den PhoneCallStatus-Wert Pending, Success oder Failed zurückgeben.
  • GetCallStatus: Wenn für einen früheren Aufruf von initiateCallPending zurückgegeben wurde, ruft der MIM-Dienst diese Methode auf. Diese Methode gibt für den PhoneCallStatus-Wert Pending, Success oder Failed zurück.
  • GetFailureMessage: Wenn für einen früheren Aufruf von InitiateCall oder GetCallStatusFailed zurückgegeben wurde, ruft der MIM-Dienst diese Methode auf. Diese Methode gibt eine diagnostische Meldung zurück.

Die Implementierungen dieser Methoden müssen threadsicher sein, und darüber hinaus müssen die Implementierung der GetCallStatus und GetFailureMessage darf nicht davon ausgehen, dass sie von demselben Thread wie ein früherer Aufruf InitiateCallaufgerufen werden.

Speichern Sie die DLL im C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\-Verzeichnis.

Beispielcode, der mithilfe von Visual Studio 2010 oder höher erstellt werden kann.

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

Schritt 3: Speichern der vorhandenen MfaSettings

Sichern Sie die MfaSettings.xml im Ordner "C:\Program Files\Microsoft Forefront Identity Manager\2010\Service".

Schritt 4: Bearbeiten Sie die MfaSettings.xml-Datei.

Aktualisieren oder löschen Sie die folgenden Zeilen:

  • Alle Konfigurationeintragszeilen entfernen/löschen

  • Aktualisieren Sie die folgenden Zeilen, oder fügen Sie diese mit Ihrem benutzerdefinierten Telefonanbieter der MfaSettings.xml-Datei hinzu.
    <CustomPhoneProvider>C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\CustomPhoneGate.dll</CustomPhoneProvider>

Schritt 5: Starten Sie den MIM-Dienst neu.

Verwenden Sie nach dem Neustart des Diensts SSPR und/oder PAM, um die Funktion mit dem benutzerdefinierten Identitätsanbieter zu überprüfen.

Hinweis

Ersetzen Sie zum Wiederherstellen Ihrer Einstellung MfaSettings.xml durch die Sicherungsdatei aus Schritt 3.

Nächste Schritte