From 5e5ed019ae10622218e1d91583e1be0e069d8383 Mon Sep 17 00:00:00 2001 From: Alfred Schreuder Date: Fri, 17 Jan 2025 13:01:23 +0100 Subject: [PATCH] Fixes CA policy deployment errors --- CHANGELOG.md | 2 ++ .../MSFT_AADConditionalAccessPolicy.psm1 | 35 +++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab8076be04..f95859a06f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ # UNRELEASED +* AADConditionalAccessPolicy + * Fixes CA policy deployment errors when deploying policies based for workload identities. * AADDeviceRegistrationPolicy * Fixes an error when trying to disable AAD join. * FabricAdminTenantSettings diff --git a/Modules/Microsoft365DSC/DSCResources/MSFT_AADConditionalAccessPolicy/MSFT_AADConditionalAccessPolicy.psm1 b/Modules/Microsoft365DSC/DSCResources/MSFT_AADConditionalAccessPolicy/MSFT_AADConditionalAccessPolicy.psm1 index 0ee0fdacb8..3086a78560 100644 --- a/Modules/Microsoft365DSC/DSCResources/MSFT_AADConditionalAccessPolicy/MSFT_AADConditionalAccessPolicy.psm1 +++ b/Modules/Microsoft365DSC/DSCResources/MSFT_AADConditionalAccessPolicy/MSFT_AADConditionalAccessPolicy.psm1 @@ -1035,7 +1035,6 @@ function Set-TargetResource Write-Verbose -Message 'Set-Targetresource: create Conditions object' $conditions = @{ applications = @{} - users = @{} } #create and provision Application Condition object Write-Verbose -Message 'Set-Targetresource: create Application Condition object' @@ -1122,6 +1121,10 @@ function Set-TargetResource Write-Verbose -Message 'Set-Targetresource: process includeusers' if ($currentParameters.ContainsKey('IncludeUsers')) { + if (-not $conditions.ContainsKey('users')) + { + $conditions.Add('users', @{}) + } $conditions.Users.Add('includeUsers', @()) foreach ($includeuser in $IncludeUsers) { @@ -1169,6 +1172,10 @@ function Set-TargetResource Write-Verbose -Message 'Set-Targetresource: process excludeusers' if ($currentParameters.ContainsKey('ExcludeUsers')) { + if (-not $conditions.ContainsKey('users')) + { + $conditions.Add('users', @{}) + } $conditions.users.Add('excludeUsers', @()) foreach ($excludeuser in $ExcludeUsers) { @@ -1216,6 +1223,10 @@ function Set-TargetResource Write-Verbose -Message 'Set-Targetresource: process includegroups' if ($currentParameters.ContainsKey('IncludeGroups')) { + if (-not $conditions.ContainsKey('users')) + { + $conditions.Add('users', @{}) + } $conditions.users.Add('includeGroups', @()) foreach ($includegroup in $IncludeGroups) { @@ -1266,6 +1277,10 @@ function Set-TargetResource Write-Verbose -Message 'Set-Targetresource: process excludegroups' if ($currentParameters.ContainsKey('ExcludeGroups')) { + if (-not $conditions.ContainsKey('users')) + { + $conditions.Add('users', @{}) + } $conditions.users.Add('excludeGroups', @()) foreach ($ExcludeGroup in $ExcludeGroups) { @@ -1316,6 +1331,10 @@ function Set-TargetResource Write-Verbose -Message 'Set-Targetresource: process includeroles' if ($currentParameters.ContainsKey('IncludeRoles')) { + if (-not $conditions.ContainsKey('users')) + { + $conditions.Add('users', @{}) + } $conditions.Users.Add('includeRoles', @()) if ($IncludeRoles) { @@ -1350,6 +1369,10 @@ function Set-TargetResource Write-Verbose -Message 'Set-Targetresource: process excluderoles' if ($currentParameters.ContainsKey('ExcludeRoles')) { + if (-not $conditions.ContainsKey('users')) + { + $conditions.Add('users', @{}) + } $conditions.users.Add('excludeRoles', @()) if ($ExcludeRoles) { @@ -1384,6 +1407,10 @@ function Set-TargetResource Write-Verbose -Message 'Set-Targetresource: process includeGuestOrExternalUser' If ($currentParameters.ContainsKey('IncludeGuestOrExternalUserTypes')) { + if (-not $conditions.ContainsKey('users')) + { + $conditions.Add('users', @{}) + } $includeGuestsOrExternalUsers = $null if ($IncludeGuestOrExternalUserTypes.Count -ne 0) { @@ -1415,6 +1442,10 @@ function Set-TargetResource Write-Verbose -Message 'Set-Targetresource: process excludeGuestsOrExternalUsers' If ($currentParameters.ContainsKey('ExcludeGuestOrExternalUserTypes')) { + if (-not $conditions.ContainsKey('users')) + { + $conditions.Add('users', @{}) + } $excludeGuestsOrExternalUsers = $null if ($ExcludeGuestOrExternalUserTypes.Count -ne 0) { @@ -1851,7 +1882,7 @@ function Set-TargetResource Write-Verbose -Message 'Create Parameters:' Write-Verbose -Message (Convert-M365DscHashtableToString $NewParameters) - if ($newparameters.Conditions.applications.count -gt 0 -and $newparameters.Conditions.Users.count -gt 0 -and ($newparameters.GrantControls.count -gt 0 -or $newparameters.SessionControls.count -gt 0)) + if ($newparameters.Conditions.applications.count -gt 0 -and ($newparameters.Conditions.Users.count -gt 0 -or $newparameters.Conditions.ClientApplications.count -gt 0) -and ($newparameters.GrantControls.count -gt 0 -or $newparameters.SessionControls.count -gt 0)) { try {