Azure AD B2C 사용자 지정 정책에서 Azure AD MFA 기술 프로필 정의

Azure AD B2C(Azure Active Directory B2C)는 확인 코드를 사용하거나 TOTP(시간 제약이 있는 일회성 암호) 코드를 확인하여 전화번호를 확인하기 위한 지원을 제공합니다.

참고

이 기능은 공개 미리 보기 상태입니다.

프로토콜

Protocol 요소의 Name 특성은 Proprietary로 설정해야 합니다. handler 특성은 Azure AD B2C에서 사용되는 프로토콜 처리기 어셈블리의 정규화 된 이름을 포함해야 합니다.

Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

다음 예제는 Azure AD MFA 기술 프로필을 보여 줍니다.

<TechnicalProfile Id="AzureMfa-SendSms">
    <DisplayName>Send Sms</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    ...

통신망 모드 확인

통신망 인증 모드에서는 기술 프로필이 코드를 생성하여 전화번호로 보낸 다음 코드를 확인합니다. Azure AD MFA 기술 프로필도 오류 메시지를 반환할 수 있습니다. 유효성 검사 기술 프로필은 사용자 경험이 계속되기 전에 사용자가 제공한 데이터의 유효성을 검사합니다. 유효성 검사 기술 프로필을 사용하면 오류 메시지가 자체 어설션된 페이지에 표시됩니다. 기술 프로필:

  • 사용자와 상호 작용하기 위한 인터페이스를 제공하지 않습니다. 대신 사용자 인터페이스가 자체 표명된 기술 프로필에서 호출되거나 디스플레이 컨트롤유효성 검사 기술 프로필로 호출됩니다.
  • Azure AD MFA 서비스를 사용하여 코드를 생성하고 전화번호로 보낸 다음 코드를 확인합니다.
  • 문자 메시지를 통해 전화번호의 유효성을 검사합니다.

기술 프로필은 SMS 문자 메시지를 통해 확인 코드를 전송하고 코드를 확인하는 방법을 제공합니다. 다음 스크린샷은 전화 검증 도구 흐름을 보여 줍니다.

Screenshot showing TOTP flow

SMS 보내기

전화를 확인하려면 첫 번째 단계에서 코드를 생성하고 전화번호로 보냅니다. 이 단계에 대해 다음 옵션을 구성할 수 있습니다.

입력 클레임

InputClaims 요소는 Azure AD MFA로 보낼 클레임 목록을 포함합니다. 클레임 이름을 MFA 기술 프로필에서 정의된 이름에 매핑할 수도 있습니다.

ClaimReferenceId 필수 설명
userPrincipalName 전화번호를 소유하는 사용자의 식별자입니다.
phoneNumber SMS 코드를 보낼 전화번호입니다.
companyName SMS의 회사 이름입니다. 지정하지 않으면 응용 프로그램의 이름이 사용됩니다.
locale SMS의 로캘입니다. 입력되지 않으면 사용자의 브라우저 로캘이 사용됩니다.

출력 클레임

Azure AD MFA 프로토콜 공급자는 출력 클레임을 반환하지 않으므로 출력 클레임을 지정할 필요가 없습니다.

메타데이터

Metadata 요소는 다음 특성을 포함합니다.

attribute 필수 설명
Operation OneWaySMS이어야 합니다.
UI 요소

다음 메타데이터는 SMS 전송 실패 시 표시되는 오류 메시지를 구성하는 데 사용할 수 있습니다. 메타데이터는 자체 어설션 기술 프로필에서 구성해야 합니다. 오류 메시지는 지역화될 수 있습니다.

attribute 필수 설명
UserMessageIfCouldntSendSms 제공된 전화번호가 SMS를 수락하지 않는 경우의 사용자 오류 메시지입니다.
UserMessageIfInvalidFormat 제공된 전화번호가 유효한 번호가 아닌 경우의 사용자 오류 메시지입니다.
UserMessageIfServerError 서버에 내부 오류가 발생한 경우의 사용자 오류 메시지입니다.
UserMessageIfThrottled 요청이 제한된 경우의 사용자 오류 메시지입니다.

예: SMS 보내기

다음 예제에서는 SMS를 통해 코드를 보내는 데 사용 되는 Azure AD MFA 기술 프로필을 보여줍니다.

<TechnicalProfile Id="AzureMfa-SendSms">
  <DisplayName>Send Sms</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">OneWaySMS</Item>
  </Metadata>
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CombinePhoneAndCountryCode" />
    <InputClaimsTransformation ReferenceId="ConvertStringToPhoneNumber" />
  </InputClaimsTransformations>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="userPrincipalName" />
    <InputClaim ClaimTypeReferenceId="fullPhoneNumber" PartnerClaimType="phoneNumber" />
  </InputClaims>
</TechnicalProfile>

코드 확인

코드 확인 단계는 사용자에게 전송된 코드를 확인합니다. 이 단계에 대해 다음 옵션을 구성할 수 있습니다.

입력 클레임

InputClaims 요소는 Azure AD MFA로 보낼 클레임 목록을 포함합니다. 클레임 이름을 MFA 기술 프로필에서 정의된 이름에 매핑할 수도 있습니다.

ClaimReferenceId 필수 설명
phoneNumber 이전에 코드를 전송하는 데 사용한 것과 동일한 전화번호입니다. 전화 확인 세션을 찾는 데도 사용 됩니다.
verificationCode 확인을 위해 사용자가 제공한 확인 코드입니다.

출력 클레임

Azure AD MFA 프로토콜 공급자는 출력 클레임을 반환하지 않으므로 출력 클레임을 지정할 필요가 없습니다.

메타데이터

Metadata 요소는 다음 특성을 포함합니다.

attribute 필수 설명
Operation Verify이어야 합니다.
UI 요소

코드 확인 실패 시 표시되는 오류 메시지를 구성하는 데 다음 메타데이터를 사용할 수 있습니다. 메타데이터는 자체 어설션 기술 프로필에서 구성해야 합니다. 오류 메시지는 지역화될 수 있습니다.

attribute 필수 설명
UserMessageIfMaxAllowedCodeRetryReached 사용자가 확인 코드를 너무 많이 시도하는 경우의 사용자 오류 메시지입니다.
UserMessageIfServerError 서버에 내부 오류가 발생한 경우의 사용자 오류 메시지입니다.
UserMessageIfThrottled 요청을 제한하는 경우의 사용자 오류 메시지입니다.
UserMessageIfWrongCodeEntered 확인을 위해 입력한 코드가 잘못된 경우의 사용자 오류 메시지입니다.

예제: 코드 확인

다음 예제에서는 코드를 확인하는 데 사용되는 Azure AD MFA 기술 프로필을 보여줍니다.

<TechnicalProfile Id="AzureMfa-VerifySms">
    <DisplayName>Verify Sms</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    <Metadata>
        <Item Key="Operation">Verify</Item>
    </Metadata>
    <InputClaims>
        <InputClaim ClaimTypeReferenceId="phoneNumber" PartnerClaimType="phoneNumber" />
        <InputClaim ClaimTypeReferenceId="verificationCode" />
    </InputClaims>
</TechnicalProfile>

TOTP 모드

이 모드에서 사용자는 자신이 소유한 디바이스에 Microsoft Authenticator 앱과 같이 TOTP(시간 제약이 있는 일회성 암호) 확인을 지원하는 인증 앱을 설치해야 합니다.

처음 등록 또는 로그인하는 동안 사용자는 QR 코드를 검사하거나 딥 링크를 열거나 인증 앱을 사용하여 수동으로 코드를 입력합니다. TOTP 코드를 확인하려면 OTP 확인 시작 다음에 TOTP 확인 확인 기술 프로필을 사용합니다.

후속 로그인의 경우 사용 가능한 디바이스 가져오기 방법을 사용하여 사용자가 이미 디바이스를 등록했는지 확인합니다. 사용 가능한 디바이스의 수가 0보다 크면 사용자가 이전에 등록했음을 나타냅니다. 이 경우 사용자는 인증 앱에 표시되는 TOTP 코드를 입력해야 합니다.

기술 프로필:

  • 사용자와 상호 작용하기 위한 인터페이스를 제공하지 않습니다. 대신 TOTP 디스플레이 컨트롤을 사용하여 자체 어설션 기술 프로필에서 사용자 인터페이스가 호출됩니다.
  • Azure AD MFA 서비스를 사용하여 TOTP 코드의 유효성을 검사합니다.
  • 사용자가 이미 디바이스를 등록했는지 확인합니다.

다음 스크린샷은 TOTP 등록 및 확인 흐름을 보여 줍니다. 사용 가능한 디바이스의 수를 확인하는 것으로 시작됩니다. 사용 가능한 디바이스의 수가 0인 경우 사용자는 등록 조정 단계를 거칩니다. 그렇지 않으면 사용자는 검증 조정 단계를 거칩니다.

Screenshot showing TOTP flow.

사용 가능한 디바이스 가져오기

사용 가능한 디바이스 가져오기 모드는 사용자가 사용할 수 있는 디바이스 수를 확인합니다. 사용 가능한 디바이스 수가 0이면 사용자가 아직 등록하지 않았음을 나타냅니다.

입력 클레임

InputClaims 요소는 Azure AD MFA로 보낼 클레임 목록을 포함합니다. 클레임 이름을 MFA 기술 프로필에서 정의된 이름에 매핑할 수도 있습니다.

ClaimReferenceId 필수 설명
userPrincipalName 사용자 계정 이름입니다.

출력 클레임

출력 클레임 요소에는 Azure AD MFA에서 반환할 클레임 목록이 포함되어 있습니다. 클레임 이름을 MFA 기술 프로필에서 정의된 이름에 매핑할 수도 있습니다.

ClaimReferenceId 필수 설명
numberOfAvailableDevices 사용자가 사용할 수 있는 디바이스의 수입니다.

메타데이터

Metadata 요소는 다음 특성을 포함합니다.

attribute 필수 설명
Operation GetAvailableDevices이어야 합니다.

예: 사용 가능한 디바이스 가져오기

다음 예에서는 사용 가능한 디바이스 수를 가져오는 데 사용되는 Azure AD MFA 기술 프로필을 보여 줍니다.

<TechnicalProfile Id="AzureMfa-GetAvailableDevices">
  <DisplayName>Get Available Devices</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">GetAvailableDevices</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="userPrincipalName" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="numberOfAvailableDevices" />
  </OutputClaims>
</TechnicalProfile>

TOTP 확인 시작

TOTP 확인 시작은 확인 프로세스를 시작합니다. 이 확인 기술 프로파일은 TOTP 코드를 제시하고 확인하는 자체 어설션 기술 프로파일에서 호출됩니다. 이 확인 기술 프로필 다음에 TOTP 확인 확인 기술 프로필을 호출해야 합니다.

입력 클레임

InputClaims 요소는 Azure AD MFA로 보낼 클레임 목록을 포함합니다. 클레임 이름을 MFA 기술 프로필에서 정의된 이름에 매핑할 수도 있습니다.

ClaimReferenceId 필수 설명
userPrincipalName 사용자 계정 이름입니다.
objectId 사용자 개체 ID입니다.
secretKey 사용자의 비밀 키입니다. 이 키는 Azure AD B2C 디렉터리의 사용자 프로필에 저장되며 인증 앱과 공유됩니다. 인증 앱은 비밀을 사용하여 TOTP 코드를 생성합니다. 이 기술 프로필은 비밀을 사용하여 TOTP 코드를 확인합니다.

출력 클레임

Azure AD MFA 프로토콜 공급자는 출력 클레임을 반환하지 않으므로 출력 클레임을 지정할 필요가 없습니다.

메타데이터

Metadata 요소는 다음 특성을 포함합니다.

attribute 필수 설명
Operation BeginVerifyOTP이어야 합니다.

예: TOTP 확인 시작

다음 예에서는 TOTP 확인 프로세스를 시작하는 데 사용되는 Azure AD MFA 기술 프로필을 보여 줍니다.

<TechnicalProfile Id="AzureMfa-BeginVerifyOTP">
  <DisplayName>Begin verify TOTP"</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">BeginVerifyOTP</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="secretKey" />
    <InputClaim ClaimTypeReferenceId="objectId" />
    <InputClaim ClaimTypeReferenceId="userPrincipalName" />
  </InputClaims>
</TechnicalProfile>

TOTP 확인

TOTP 확인 방법은 TOTP 코드를 확인합니다. 이 확인 기술 프로파일은 TOTP 코드를 제시하고 확인하는 자체 어설션 기술 프로파일에서 호출됩니다. 이 확인 기술 프로필은 TOTP 확인 시작 확인 기술 프로필을 호출해야 합니다.

입력 클레임

InputClaims 요소는 Azure AD MFA로 보낼 클레임 목록을 포함합니다. 클레임 이름을 MFA 기술 프로필에서 정의된 이름에 매핑할 수도 있습니다.

ClaimReferenceId 필수 설명
otpCode 사용자가 제공한 TOTP 코드입니다.

출력 클레임

Azure AD MFA 프로토콜 공급자는 출력 클레임을 반환하지 않으므로 출력 클레임을 지정할 필요가 없습니다.

메타데이터

Metadata 요소는 다음 특성을 포함합니다.

attribute 필수 설명
Operation VerifyOTP이어야 합니다.

예: TOTP 확인

다음 예에서는 TOTP 코드를 확인하는 데 사용되는 Azure AD MFA 기술 프로필을 보여 줍니다.

<TechnicalProfile Id="AzureMfa-VerifyOTP">
  <DisplayName>Verify OTP</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">VerifyOTP</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="otpCode" />
  </InputClaims>
</TechnicalProfile>

다음 단계