Menggunakan penyedia autentikasi multifaktor kustom melalui API selama aktivasi peran PAM atau di SSPR

Pelanggan MIM memiliki dua opsi untuk autentikasi multifaktor dalam skenario SSPR dan PAM:

  • Gunakan penyedia pengiriman satu kali kata sandi kustom, yang hanya berlaku dalam skenario MIM SSPR dan didokumenkan dalam panduan untuk Mengonfigurasi Self-Service Reset Kata Sandi dengan Gerbang SMS OTP
  • Gunakan penyedia telepon autentikasi multifaktor kustom. Ini berlaku dalam skenario MIM SSPR dan PAM, yang dijelaskan dalam artikel ini

Artikel ini menguraikan cara menggunakan MIM dengan penyedia autentikasi multifaktor kustom, melalui API dan SDK integrasi yang dikembangkan oleh pelanggan.

Prasyarat

Untuk menggunakan API penyedia autentikasi multifaktor kustom dengan MIM, Anda memerlukan:

  • Nomor telepon untuk semua pengguna kandidat
  • Perbaikan MIM 4.5.202.0 atau yang lebih baru - lihat riwayat versi untuk pengumuman
  • Layanan MIM dikonfigurasi untuk SSPR atau PAM

Pendekatan menggunakan kode autentikasi multifaktor kustom

Langkah 1: Pastikan Layanan MIM berada di versi 4.5.202.0 atau yang lebih baru

Unduh dan instal perbaikan MIM 4.5.202.0 atau versi yang lebih baru.

Langkah 2: Buat DLL yang mengimplementasikan antarmuka IPhoneServiceProvider

DLL harus menyertakan kelas , yang mengimplementasikan tiga metode:

  • InitiateCall: Layanan MIM akan memanggil metode ini. Layanan meneruskan nomor telepon dan ID permintaan sebagai parameter. Metode harus mengembalikan PhoneCallStatus nilai Pending, Success atau Failed.
  • GetCallStatus: Jika panggilan sebelumnya untuk initiateCall dikembalikan Pending, Layanan MIM akan memanggil metode ini. Metode ini juga mengembalikan PhoneCallStatus nilai Pending, Success atau Failed.
  • GetFailureMessage: Jika pemanggilan sebelumnya atau InitiateCallGetCallStatus dikembalikan Failed, Layanan MIM akan memanggil metode ini. Metode ini mengembalikan pesan diagnostik.

Implementasi metode ini harus aman utas, dan selanjutnya implementasi dan GetCallStatusGetFailureMessage tidak boleh berasumsi bahwa mereka akan dipanggil oleh utas yang sama dengan panggilan sebelumnya ke InitiateCall.

Simpan DLL di C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\ direktori.

Kode sampel, yang dapat dikompilasi menggunakan Visual Studio 2010 atau yang lebih baru.

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

Langkah 3: Simpan MfaSettings yang ada

Cadangkan MfaSettings.xml yang terletak di folder "C:\Program Files\Microsoft Forefront Identity Manager\2010\Service".

Langkah 4: Edit file MfaSettings.xml

Perbarui atau kosongkan baris berikut:

  • Hapus/Hapus semua baris entri konfigurasi

  • Perbarui atau tambahkan baris berikut ke baris berikut ini untuk MfaSettings.xml dengan penyedia telepon kustom Anda
    <CustomPhoneProvider>C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\CustomPhoneGate.dll</CustomPhoneProvider>

Langkah 5: Mulai ulang Layanan MIM

Setelah layanan dimulai ulang, gunakan SSPR dan/atau PAM untuk memvalidasi fungsionalitas dengan IdP kustom.

Catatan

Untuk mengembalikan pengaturan, ganti MfaSettings.xml dengan file cadangan Anda di langkah 3

Langkah berikutnya