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 eenPhoneCallStatus
waarde vanPending
,Success
ofFailed
.GetCallStatus
: Als een eerdere aanroep die moet wordeninitiateCall
Pending
geretourneerd, roept de MIM-service deze methode aan. Deze methode retourneertPhoneCallStatus
ook de waarde vanPending
,Success
ofFailed
.GetFailureMessage
: Als een eerdere aanroep vanInitiateCall
ofGetCallStatus
geretourneerdFailed
, 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