Partager via


Utiliser un fournisseur d’authentification multifacteur personnalisé via une API lors de l’activation du rôle PAM ou dans SSPR

Les clients MIM ont deux options pour l’authentification multifacteur dans les scénarios SSPR et PAM :

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 une API de fournisseur d’authentification multifacteur personnalisée 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 retourner PhoneCallStatus (ayant pour valeur Pending, Success ou Failed).
  • GetCallStatus : si un appel précédent à initiateCall a retourné Pending, le service MIM appelle cette méthode. Cette méthode retourne également PhoneCallStatus (ayant pour valeur Pending, Success ou Failed).
  • GetFailureMessage : si une invocation précédente de InitiateCall ou GetCallStatus a 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, et en outre, l’implémentation du GetCallStatus thread et GetFailureMessage ne doit pas supposer qu’elles seront appelées par le même thread qu’un appel antérieur à 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 : Enregistrer les MfaSettings existants

Sauvegardez le MfaSettings.xml situé dans le dossier « 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

Étapes suivantes