Utiliser un fournisseur Multi-Factor Authentication personnalisé par le biais d’une API durant l’activation du rôle PAM ou dans SSPR
Les clients d’Azure AD Premium ou d’Azure MFA peuvent intégrer Azure MFA dans deux scénarios MIM : activation de rôle Privileged Access Management (PAM) et réinitialisation de mot de passe libre-service (SSPR).
Les clients MIM disposent de deux options supplémentaires :
- Utiliser un fournisseur de remise de mot de passe à usage unique personnalisé, applicable uniquement au scénario MIM SSPR et documenté dans le guide Configurer la réinitialisation de mot de passe libre-service avec la porte de messages texte du mot de passe à usage unique
- Utiliser un fournisseur de téléphonie Multi-Factor Authentication personnalisé. Applicable aux scénarios MIM SSPR et PAM décrits dans cet article
Cet article explique comment utiliser MIM avec un fournisseur Multi-Factor Authentication personnalisé par le biais d’une API et d’un SDK d’intégration développé par le client.
Prérequis
Pour utiliser l’API d’un fournisseur Multi-Factor Authentication personnalisé avec MIM, vous avez besoin des éléments suivants :
- numéros de téléphone de tous les utilisateurs candidats.
- Correctif logiciel MIM 4.5.202.0 ou ultérieur (consultez l’historique des versions pour parcourir les annonces)
- Service MIM configuré pour SSPR ou PAM
Approche à l’aide d’un code Multi-Factor Authentication personnalisé
Étape 1 : Vérifier que la version du service MIM est au minimum 4.5.202.0
Téléchargez et installez le correctif logiciel MIM 4.5.202.0 ou ultérieur.
Étape 2 : Créer une DLL qui implémente l’interface IPhoneServiceProvider
La DLL doit inclure une classe qui implémente trois méthodes :
InitiateCall: le service MIM appelle cette méthode. Le service passe le numéro de téléphone et l’ID de requête comme paramètres. La méthode doit retournerPhoneCallStatus(ayant pour valeurPending,SuccessouFailed).GetCallStatus: si un appel précédent àinitiateCalla retournéPending, le service MIM appelle cette méthode. Cette méthode retourne égalementPhoneCallStatus(ayant pour valeurPending,SuccessouFailed).GetFailureMessage: si une invocation précédente deInitiateCallouGetCallStatusa retournéFailed, le service MIM appelle cette méthode. Cette méthode retourne un message de diagnostic.
Les implémentations de ces méthodes doivent être thread-safe. De plus, l’implémentation des méthodes GetCallStatus et GetFailureMessage ne doit pas supposer qu’elles seront appelées par le même thread que celui utilisé lors d’un appel précédent à InitiateCall.
Stockez la DLL dans le répertoire C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\.
Vous pouvez compiler l’exemple de code à l’aide de Visual Studio 2010 ou ultérieur.
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;
}
}
}
Étape 3 : Sauvegarder MfaSettings.xml situé dans C:\Program Files\Microsoft Forefront Identity Manager\2010\Service
Étape 4 : Modifier le fichier MfaSettings.xml
Mettez à jour ou effacez les lignes suivantes :
Supprimez/effacez toutes les lignes des entrées de configuration
Mettez à jour ou ajoutez les lignes suivantes à ce qui suit dans MfaSettings.xml avec votre fournisseur de téléphonie personnalisé
<CustomPhoneProvider>C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\CustomPhoneGate.dll</CustomPhoneProvider>
Étape 5 : Redémarrer le Service MIM
Une fois le service redémarré, utilisez SSPR et/ou PAM pour valider les fonctionnalités avec le fournisseur d’identité personnalisé.
Notes
Pour rétablir les paramètres, remplacez MfaSettings.xml par votre fichier de sauvegarde créé à l’étape 3