다음을 통해 공유


PAM 역할 활성화 중 또는 SSPR에서 API를 통해 사용자 지정 다단계 인증 공급자 사용

MIM 고객에게는 SSPR 및 PAM 시나리오에서 다단계 인증을 위한 두 가지 옵션이 있습니다.

  • MIM SSPR 시나리오에만 적용되고 OTP SMS 게이트를 사용하여 Self-Service 암호 재설정 구성 가이드에 설명된 사용자 지정 일회용 암호 배달 공급자 사용
  • 사용자 지정 다단계 인증 전화 통신 공급자를 사용합니다. 이는 이 문서에 설명된 MIM SSPR 및 PAM 시나리오 모두에 적용됩니다.

이 문서에서는 API 및 고객이 개발한 통합 SDK를 통해 사용자 지정 다단계 인증 공급자와 함께 MIM을 사용하는 방법을 간략하게 설명합니다.

필수 조건

MIM에서 사용자 지정 다단계 인증 공급자 API를 사용하려면 다음이 필요합니다.

  • 모든 후보 사용자의 전화 번호
  • MIM 핫픽스 4.5.202.0 이상 - 버전 기록에서 공지 사항 참조
  • SSPR 또는 PAM에 대해 구성된 MIM 서비스

사용자 지정 다단계 인증 코드를 사용하는 방법

1단계: MIM 서비스가 버전 4.5.202.0 이상인지 확인

MIM 핫픽스 4.5.202.0 이상을 다운로드하여 설치합니다.

2단계: IPhoneServiceProvider 인터페이스를 구현하는 DLL 만들기

DLL에는 다음 세 가지 메서드를 구현하는 클래스가 포함되어야 합니다.

  • InitiateCall: MIM 서비스에서 이 메서드를 호출합니다. 서비스는 전화 번호와 요청 ID를 매개 변수로 전달합니다. 메서드는 PhoneCallStatus 값, Pending, Success 또는 Failed 값을 반환해야 합니다.
  • GetCallStatus: 이전에 반환initiateCallPending 호출이 있으면 MIM 서비스에서 이 메서드를 호출합니다. 이 메서드는 PhoneCallStatus, Pending 또는 SuccessFailed 값을 반환합니다.
  • GetFailureMessage: 이전에 호출 InitiateCall 하거나 GetCallStatus 반환 Failed한 경우 MIM 서비스에서 이 메서드를 호출합니다. 이 메서드는 진단 메시지를 반환합니다.

이러한 메서드의 구현은 스레드로부터 안전해야 하며, 또한 GetCallStatusGetFailureMessage은 이전의 InitiateCall 호출과 동일한 스레드에서 호출될 것이라고 가정해서는 안 됩니다.

DLL을 C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\ 디렉터리에 저장합니다.

Visual Studio 2010 이상을 사용하여 컴파일할 수 있는 샘플 코드입니다.

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단계: 기존 MfaSettings 저장

"C:\Program Files\Microsoft Forefront Identity Manager\2010\Service" 폴더에 있는 MfaSettings.xml 백업합니다.

4단계: MfaSettings.xml 파일 편집

다음 라인을 업데이트하거나 정리합니다.

  • 모든 구성 항목 줄 제거/지우기

  • 사용자 지정 전화 공급자를 사용하여 다음 줄을 MfaSettings.xml까지 업데이트하거나 추가합니다.
    <CustomPhoneProvider>C:\Program Files\Microsoft Forefront Identity Manager\2010\Service\CustomPhoneGate.dll</CustomPhoneProvider>

5단계: MIM 서비스 다시 시작

서비스가 다시 시작되면 SSPR 및/또는 PAM을 사용하여 사용자 지정 ID 공급자를 사용하여 기능의 유효성을 검사합니다.

비고

설정을 되돌리려면 3단계에서 MfaSettings.xml 백업 파일로 바꾸기

다음 단계