private/tests/Test-BlockLegacyAuthCaPolicy.21796.ps1

<#
.SYNOPSIS
    Checks that legacy auth is blocked.
#>


function Test-BlockLegacyAuthCaPolicy {
    [CmdletBinding()]
    param()

    Write-PSFMessage '🟦 Start' -Tag Test -Level VeryVerbose

    $activity = "Checking blocking of legacy authentication"
    Write-ZtProgress -Activity $activity -Status "Getting CA policies"

    $caps = Invoke-ZtGraphRequest -RelativeUri 'identity/conditionalAccess/policies' -ApiVersion beta

    $blockPolicies = $caps | Where-Object {`
            $_.grantControls.builtInControls -contains "block" -and `
            $_.conditions.clientAppTypes -contains "exchangeActiveSync" -and `
            $_.conditions.clientAppTypes -contains "other" }


    $passed = $blockPolicies.conditions.users.includeUsers -contains "All" -and $blockPolicies.state -eq "enabled"

    if ($passed) {
        $testResultMarkdown = "Conditional Access to block legacy Authentication are configured and enabled.`n`n%TestResult%"
    }
    elseif (($blockPolicies | Measure-Object).Count -ge 1) {
        $testResultMarkdown = "Policies to block legacy authentication were found but are not properly configured.`n`n%TestResult%"
    }
    else {
        $testResultMarkdown = "No conditional access to block legacy authentication were found."
    }

    Add-ZtTestResultDetail -TestId '21796' -Title 'Block legacy authentication policies are configured' `
        -UserImpact Medium -Risk Medium -ImplementationCost Low `
        -AppliesTo Entra -Tag User, Credential `
        -Status $passed -Result $testResultMarkdown -GraphObjectType ConditionalAccess -GraphObjects $blockPolicies
}