AAD B2C Условный МИД — Не регистрируйтесь

#azure-ad-b2c #multi-factor-authentication #aad-b2c

Вопрос:

Мы используем AAD B2C для 30 тысяч пользователей и целого ряда приложений. Я хочу постепенно внедрять MFA для подмножества пользователей. Политика условного доступа звучит идеально, за исключением того, что в рамках встроенного потока входа пользователей пользователям предлагается зарегистрироваться в MFA и ввести адрес электронной почты/телефон, даже если на них не распространяется политика условного доступа. Это не соответствует цели медленного развертывания MFA.

На этой странице предполагается, что регистрация происходит независимо от условного доступа. https://docs.microsoft.com/en-us/azure/active-directory-b2c/conditional-access-user-flow?pivots=b2c-user-flow

Я нашел способы обновить телефон аутентификации пользователя или электронную почту с помощью API Graph… но я бы предпочел этого не делать, так как не уверен, что у меня есть правильный номер телефона под рукой.

Есть ли способ отсрочить процесс зачисления?

Ответ №1:

Вы можете сделать это с помощью пользовательской политики.

Отметьте пользователей, которых вы хотите зарегистрировать, атрибутом расширения. Для этого используйте api graph. В пользовательской политике прочитайте этот атрибут после того, как пользователь проверил свои учетные данные. Также прочитайте атрибут номера телефона.

 $tenant = "contoso.onmicrosoft.com"
#B2CUserMigration Application Registration Application Id
$ClientID      = "" 
#B2CUserMigration Application Registration generated key (client secret)  
$ClientSecret  = ""     
$loginURL = "https://login.microsoftonline.com"
$resource = "https://graph.microsoft.com"

# Get an OAuth 2 access token based on client id, secret and tenant
$body = @{grant_type="client_credentials";client_id=$ClientID;client_secret=$ClientSecret;resource=$resource}
$oauth = Invoke-RestMethod -Method Post -Uri $loginURL/$tenant/oauth2/token?api-version=1.0 -Body $body

#Part 2 - Register the extension attribute named "requiresMigration" into Azure AD B2C
#ObjectID of the b2c-extensions-app App Registration
$AppObjectID = ""

#Set the endpoint to register extension attributes
$url = "$resource/v1.0/applications/$AppObjectID/extensionProperties"

#Define the extension attribute
$body = @"
{ 
 "name": "requiresMFA", 
 "dataType": "Boolean", 
 "targetObjects": ["User"]
}
"@

#Patch the user
$objectId = "user objectId to update"
$url = "$resource/v1.0/users/$objectId"

$body = @"
{
   extension_GUID-WITHOUT-DASHES_requiresMFA: true
}
"@
 

Если для атрибута установлено значение true, а номер телефона равен нулю, то зарегистрируйтесь в mfa. Управляйте этапом оркестровки mfa с помощью набора предварительных условий.

         <TechnicalProfile Id="AAD-UserReadUsingObjectId">
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="requiresMFA" DefaultValue="false"/>
            <OutputClaim ClaimTypeReferenceId="strongAuthenticationPhoneNumber" DefaultValue="00"/>
          </OutputClaims>
          <IncludeTechnicalProfile ReferenceId="AAD-Common" />
        </TechnicalProfile>
 
         <OrchestrationStep Order="XX" Type="ClaimsExchange">
          <Preconditions>
            <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
              <Value>isActiveMFASession</Value>
              <Action>SkipThisOrchestrationStep</Action>
            </Precondition>
            <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
              <Value>requiresMFA</Value>
              <Value>False</Value>
              <Action>SkipThisOrchestrationStep</Action>
            </Precondition>
          </Preconditions>
          <ClaimsExchanges>
            <ClaimsExchange Id="PhoneFactor-Verify" TechnicalProfileReferenceId="PhoneFactor-InputOrVerify" />
          </ClaimsExchanges>
        </OrchestrationStep>