private/tests/Test-Assessment.21802.ps1
<# .SYNOPSIS #> function Test-Assessment-21802 { [CmdletBinding()] param() Write-PSFMessage '🟦 Start' -Tag Test -Level VeryVerbose $activity = "Checking Authenticator app shows sign-in context" Write-ZtProgress -Activity $activity -Status "Getting authentication method policy" # Query Microsoft Authenticator authentication method configuration $authenticatorConfig = Invoke-ZtGraphRequest -RelativeUri 'authenticationMethodsPolicy/authenticationMethodConfigurations/MicrosoftAuthenticator' -ApiVersion 'v1.0' function Test-AuthenticatorFeatureSetting { [CmdletBinding()] param( [Parameter(Mandatory)] [object]$FeatureSetting ) $FeatureSetting.state -eq 'enabled' -and $FeatureSetting.includeTarget.id -eq 'all_users' -and $FeatureSetting.excludeTarget.id -eq '00000000-0000-0000-0000-000000000000' } function Get-AuthenticatorFeatureSettingTarget { [CmdletBinding()] param( [Parameter(Mandatory)] [object]$Target ) if ($Target.id -eq 'all_users') { return "All users" } elseif ($Target.id -eq '00000000-0000-0000-0000-000000000000') { return "No exclusions" } else { if ($Target.targetType -eq 'group') { $group = Invoke-ZtGraphRequest -RelativeUri "groups/$($Target.id)" -ApiVersion 'v1.0' Write-Output "Group: $($group.displayName)" } } } # Check if both app information and location information are properly configured $appInfoEnabled = Test-AuthenticatorFeatureSetting -FeatureSetting $authenticatorConfig.featureSettings.displayAppInformationRequiredState $locationInfoEnabled = Test-AuthenticatorFeatureSetting -FeatureSetting $authenticatorConfig.featureSettings.displayLocationInformationRequiredState if ($appInfoEnabled -and $locationInfoEnabled) { $passed = $true $testResultMarkdown = "Microsoft Authenticator shows application name and geographic location in push notifications.`n`n%TestResult%" } else { $passed = $false $testResultMarkdown = "Microsoft Authenticator notifications lack sign-in context.`n`n%TestResult%" } if ($appInfoEnabled) {$appEmoji = "✅"} else {$appEmoji = "❌"} if ($locationInfoEnabled) {$locationEmoji = "✅"} else {$locationEmoji = "❌"} # Build the detailed sections of the markdown # Define variables to insert into the format string $reportTitle = "Microsoft Authenticator settings" # Create a here-string with format placeholders {0}, {1}, etc. $formatTemplate = @" ## {0} Feature Settings: $appEmoji **Application Name** - Status: $((Get-Culture).TextInfo.ToTitleCase($authenticatorConfig.featureSettings.displayAppInformationRequiredState.state.ToLower())) - Include Target: $(Get-AuthenticatorFeatureSettingTarget -Target $authenticatorConfig.featureSettings.displayAppInformationRequiredState.includeTarget) - Exclude Target: $(Get-AuthenticatorFeatureSettingTarget -Target $authenticatorConfig.featureSettings.displayAppInformationRequiredState.excludeTarget) $locationEmoji **Geographic Location** - Status: $((Get-Culture).TextInfo.ToTitleCase($authenticatorConfig.featureSettings.displayLocationInformationRequiredState.state.ToLower())) - Include Target: $(Get-AuthenticatorFeatureSettingTarget -Target $authenticatorConfig.featureSettings.displayLocationInformationRequiredState.includeTarget) - Exclude Target: $(Get-AuthenticatorFeatureSettingTarget -Target $authenticatorConfig.featureSettings.displayLocationInformationRequiredState.excludeTarget) "@ # Format the template by replacing placeholders with values $mdInfo = $formatTemplate -f $reportTitle # Replace the placeholder with the detailed information $testResultMarkdown = $testResultMarkdown -replace "%TestResult%", $mdInfo $params = @{ TestId = '21802' Title = 'Authenticator app shows sign-in context' UserImpact = 'Low' Risk = 'Medium' ImplementationCost = 'Low' AppliesTo = 'Identity' Tag = 'Identity' Status = $passed Result = $testResultMarkdown } Add-ZtTestResultDetail @params } |