PAM rol etkinleştirmesi sırasında veya SSPR'de API aracılığıyla özel çok faktörlü kimlik doğrulama sağlayıcısı kullanma

MIM müşterilerinin SSPR ve PAM senaryolarında çok faktörlü kimlik doğrulaması için iki seçeneği vardır:

  • Yalnızca MIM SSPR senaryosunda geçerli olan ve OTP SMS Geçidi ile Self-Service Parola Sıfırlamayı Yapılandırma kılavuzunda belgelenen özel bir tek seferlik parola teslim sağlayıcısı kullanın
  • Özel bir çok faktörlü kimlik doğrulaması telefon sağlayıcısı kullanın. Bu, bu makalede açıklanan MIM SSPR ve PAM senaryolarında geçerlidir

Bu makalede, müşteri tarafından geliştirilen bir API ve tümleştirme SDK'sı aracılığıyla özel bir çok faktörlü kimlik doğrulama sağlayıcısıyla MIM'in nasıl kullanılacağı özetlenmiştir.

Önkoşullar

MIM ile özel çok faktörlü kimlik doğrulama sağlayıcısı API'sini kullanmak için şunları yapmanız gerekir:

  • Tüm aday kullanıcılar için telefon numaraları
  • MIM düzeltmesi 4.5.202.0 veya üzeri - Duyurular için sürüm geçmişine bakın
  • SSPR veya PAM için yapılandırılmış MIM Hizmeti

Özel çok faktörlü kimlik doğrulama kodunu kullanma yaklaşımı

1. Adım: MIM Hizmeti'nin 4.5.202.0 veya sonraki bir sürümde olduğundan emin olun

MIM düzeltmesi 4.5.202.0 veya sonraki bir sürümü indirip yükleyin.

2. Adım: IPhoneServiceProvider arabirimini uygulayan bir DLL oluşturma

DLL, üç yöntem uygulayan bir sınıf içermelidir:

  • InitiateCall: MIM Hizmeti bu yöntemi çağırır. Hizmet, telefon numarasını ve istek kimliğini parametre olarak geçirir. yöntemi , Success veya Faileddeğerini PendingdöndürmelidirPhoneCallStatus.
  • GetCallStatus: önceki bir çağrısı initiateCall döndürülürse Pending, MIM Hizmeti bu yöntemi çağırır. Bu yöntem, veya Faileddeğerini PendingSuccess de döndürürPhoneCallStatus.
  • GetFailureMessage: Önceki bir çağrısı InitiateCall veya GetCallStatus döndürüldüyse Failed, MIM Hizmeti bu yöntemi çağırır. Bu yöntem bir tanılama iletisi döndürür.

Bu yöntemlerin uygulamaları iş parçacığı güvenli olmalı ve ayrıca uygulamasının GetCallStatus ve GetFailureMessage uygulaması, önceki InitiateCallçağrısıyla aynı iş parçacığı tarafından çağrılacaklarını varsaymamalıdır.

DLL dosyasını dizininde depolayın C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\ .

Visual Studio 2010 veya üzeri kullanılarak derlenebilir örnek kod.

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

3. Adım: Mevcut MfaSettings'i kaydetme

"C:\Program Files\Microsoft Forefront Identity Manager\2010\Service" klasöründe bulunan MfaSettings.xml yedekleyin.

4. Adım: MfaSettings.xml dosyasını düzenleme

Aşağıdaki satırları güncelleştirin veya temizleyin:

  • Tüm yapılandırma girdileri satırlarını kaldırma/temizleme

  • Özel telefon sağlayıcınızla MfaSettings.xml için aşağıdaki satırları güncelleştirin veya aşağıdaki satırlara ekleyin
    <CustomPhoneProvider>C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\CustomPhoneGate.dll</CustomPhoneProvider>

5. Adım: MIM Hizmetini Yeniden Başlatma

Hizmet yeniden başlatıldıktan sonra, özel kimlik sağlayıcısıyla işlevselliği doğrulamak için SSPR ve/veya PAM kullanın.

Not

Ayarı geri döndürmek için MfaSettings.xml 3. adımda yedekleme dosyanızla değiştirin

Sonraki Adımlar