Microsoft365DSC icon indicating copy to clipboard operation
Microsoft365DSC copied to clipboard

AADConditionalAccessPolicy seems to not take care about AuthenticationStrength

Open gibi916 opened this issue 2 years ago • 1 comments

Description of the issue

When I try to deploy a conditional access policy (new or existing) the AADConditionalAccessPolicy seems not take care about the AuthenticationStrength parameter. I set it to AuthenticationStrength = "Multifactor authentication". There is no error during deployment, but the authentication strength is not set.

Microsoft 365 DSC Version

1.23.1220.1

Which workloads are affected

Azure Active Directory

The DSC configuration

Parameters are : 
AADConditionalAccessPolicy:
  - DisplayName: "KG - Default Users Policy (Device Compliant Based OR MFA)"
    ApplicationEnforcedRestrictionsIsEnabled: False
    AuthenticationContexts: []
    AuthenticationStrength: "Multifactor authentication"
    BuiltInControls: ["compliantDevice"]
    ClientAppTypes: ["all"]
    CloudAppSecurityIsEnabled: False
    CloudAppSecurityType: ""
    CustomAuthenticationFactors: []
    DeviceFilterRule: ""
    Ensure: "Present"
    ExcludeApplications:[]
    ExcludeExternalTenantsMembers: []
    ExcludeExternalTenantsMembershipKind: ""
    ExcludeGroups: []
    ExcludeLocations: []
    ExcludePlatforms: []
    ExcludeRoles: []
    ExcludeUsers: ["[email protected]"]
    GrantControlOperator: "OR"
    IncludeApplications: ["All"]
    IncludeExternalTenantsMembers: []
    IncludeExternalTenantsMembershipKind: ""
    IncludeGroups: []
    IncludeLocations: []
    IncludePlatforms: []
    IncludeRoles: []
    IncludeUserActions: []
    IncludeUsers: ["All"]
    PersistentBrowserIsEnabled: False
    PersistentBrowserMode: ""
    SignInFrequencyInterval: "unknownFutureValue"
    SignInFrequencyIsEnabled: False
    SignInFrequencyType: ""
    SignInRiskLevels: []
    State: "enabled"
    UserRiskLevels: []


AADConditionalAccessPolicy $AADConditionalAccessPolicy.DisplayName {
                    ApplicationEnforcedRestrictionsIsEnabled = $AADConditionalAccessPolicy.ApplicationEnforcedRestrictionsIsEnabled
                    ApplicationId                            = $ApplicationId
                    AuthenticationContexts                   = $AADConditionalAccessPolicy.AuthenticationContexts
                    BuiltInControls                          = $AADConditionalAccessPolicy.BuiltInControls
                    CertificateThumbprint                    = $Thumbprint
                    ClientAppTypes                           = $AADConditionalAccessPolicy.ClientAppTypes
                    CloudAppSecurityIsEnabled                = $AADConditionalAccessPolicy.CloudAppSecurityIsEnabled
                    CloudAppSecurityType                     = $AADConditionalAccessPolicy.CloudAppSecurityType
                    CustomAuthenticationFactors              = $AADConditionalAccessPolicy.CustomAuthenticationFactors
                    DeviceFilterRule                         = $AADConditionalAccessPolicy.DeviceFilterRule
                    DisplayName                              = $AADConditionalAccessPolicy.DisplayName
                    Ensure                                   = $AADConditionalAccessPolicy.Ensure
                    ExcludeApplications                      = $AADConditionalAccessPolicy.ExcludeApplications
                    ExcludeExternalTenantsMembers            = $AADConditionalAccessPolicy.ExcludeExternalTenantsMembers
                    ExcludeExternalTenantsMembershipKind     = $AADConditionalAccessPolicy.ExcludeExternalTenantsMembershipKind
                    ExcludeGroups                            = $AADConditionalAccessPolicy.ExcludeGroups
                    ExcludeLocations                         = $AADConditionalAccessPolicy.ExcludeLocations
                    ExcludePlatforms                         = $AADConditionalAccessPolicy.ExcludePlatforms
                    ExcludeRoles                             = $AADConditionalAccessPolicy.ExcludeRoles
                    ExcludeUsers                             = $AADConditionalAccessPolicy.ExcludeUsers
                    GrantControlOperator                     = $AADConditionalAccessPolicy.GrantControlOperator
                    Id                                       = $AADConditionalAccessPolicy.Id
                    IncludeApplications                      = $AADConditionalAccessPolicy.IncludeApplications
                    IncludeExternalTenantsMembers            = $AADConditionalAccessPolicy.IncludeExternalTenantsMembers
                    IncludeExternalTenantsMembershipKind     = $AADConditionalAccessPolicy.IncludeExternalTenantsMembershipKind
                    IncludeGroups                            = $AADConditionalAccessPolicy.IncludeGroups
                    IncludeLocations                         = $AADConditionalAccessPolicy.IncludeLocations
                    IncludePlatforms                         = $AADConditionalAccessPolicy.IncludePlatforms
                    IncludeRoles                             = $AADConditionalAccessPolicy.IncludeRoles
                    IncludeUserActions                       = $AADConditionalAccessPolicy.IncludeUserActions
                    IncludeUsers                             = $AADConditionalAccessPolicy.IncludeUsers
                    PersistentBrowserIsEnabled               = $AADConditionalAccessPolicy.PersistentBrowserIsEnabled
                    PersistentBrowserMode                    = $AADConditionalAccessPolicy.PersistentBrowserMode
                    SignInFrequencyInterval                  = $AADConditionalAccessPolicy.SignInFrequencyInterval
                    SignInFrequencyIsEnabled                 = $AADConditionalAccessPolicy.SignInFrequencyIsEnabled
                    SignInFrequencyType                      = $AADConditionalAccessPolicy.SignInFrequencyType
                    SignInFrequencyValue                     = $AADConditionalAccessPolicy.SignInFrequencyValue
                    SignInRiskLevels                         = $AADConditionalAccessPolicy.SignInRiskLevels
                    State                                    = $AADConditionalAccessPolicy.State
                    TenantId                                 = $TenantId
                    UserRiskLevels                           = $AADConditionalAccessPolicy.UserRiskLevels
                }

Verbose logs showing the problem

VERBOSE: [fv-az899-388]: LCM:  [ Start  Resource ]  [[AADConditionalAccessPolicy]KG - Default Users Policy (Device 
Compliant Based)::[EntraID]EntraID_Configuration]
VERBOSE: [fv-az899-388]: LCM:  [ Start  Test     ]  [[AADConditionalAccessPolicy]KG - Default Users Policy (Device 
Compliant Based)::[EntraID]EntraID_Configuration]
VERBOSE: [fv-az899-388]:                            [[AADConditionalAccessPolicy]KG - Default Users Policy (Device 
Compliant Based)::[EntraID]EntraID_Configuration] Testing configuration of AzureAD CA Policies
VERBOSE: [fv-az899-388]:                            [[AADConditionalAccessPolicy]KG - Default Users Policy (Device 
Compliant Based)::[EntraID]EntraID_Configuration] Getting configuration of AzureAD Conditional Access Policy
VERBOSE: [fv-az899-388]:                            [[AADConditionalAccessPolicy]KG - Default Users Policy (Device 
Compliant Based)::[EntraID]EntraID_Configuration] Id was NOT specified
VERBOSE: [fv-az899-388]:                            [[AADConditionalAccessPolicy]KG - Default Users Policy (Device 
Compliant Based)::[EntraID]EntraID_Configuration] Get-TargetResource: Found existing Conditional Access policy
VERBOSE: [fv-az899-388]:                            [[AADConditionalAccessPolicy]KG - Default Users Policy (Device 
Compliant Based)::[EntraID]EntraID_Configuration] Get-TargetResource: Process IncludeUsers
VERBOSE: [fv-az899-388]:                            [[AADConditionalAccessPolicy]KG - Default Users Policy (Device 
Compliant Based)::[EntraID]EntraID_Configuration] Get-TargetResource: Process ExcludeUsers
VERBOSE: [fv-az899-388]:                            [[AADConditionalAccessPolicy]KG - Default Users Policy (Device 
Compliant Based)::[EntraID]EntraID_Configuration] Get-TargetResource: Process IncludeGroups
VERBOSE: [fv-az899-388]:                            [[AADConditionalAccessPolicy]KG - Default Users Policy (Device 
Compliant Based)::[EntraID]EntraID_Configuration] Get-TargetResource: Process ExcludeGroups
VERBOSE: [fv-az899-388]:                            [[AADConditionalAccessPolicy]KG - Default Users Policy (Device 
Compliant Based)::[EntraID]EntraID_Configuration] Get-TargetResource: Location condition defined, processing
VERBOSE: [fv-az899-388]:                            [[AADConditionalAccessPolicy]KG - Default Users Policy (Device 
Compliant Based)::[EntraID]EntraID_Configuration] Get-TargetResource: Processing IncludeLocations
VERBOSE: [fv-az899-388]:                            [[AADConditionalAccessPolicy]KG - Default Users Policy (Device 
Compliant Based)::[EntraID]EntraID_Configuration] Get-TargetResource: Processing ExcludeLocations
VERBOSE: [fv-az899-388]:                            [[AADConditionalAccessPolicy]KG - Default Users Policy (Device 
Compliant Based)::[EntraID]EntraID_Configuration] Get-TargetResource Result: 
 ApplicationEnforcedRestrictionsIsEnabled=False

ApplicationId=***

ApplicationSecret=$null

AuthenticationContexts=()

AuthenticationStrength=$null

Environment Information + PowerShell Version

OsName               : Microsoft Windows Server 2022 Datacenter
OsOperatingSystemSKU : DatacenterServerEdition
OsArchitecture       : 64-bit
WindowsVersion       : 2009
WindowsBuildLabEx    : 20348.1.amd64fre.fe_release.210507-1500
OsLanguage           : en-US
OsMuiLanguages       : {en-US}

Key   : PSVersion
Value : 5.1.20348.2110
Name  : PSVersion

Key   : PSEdition
Value : Desktop
Name  : PSEdition

Key   : PSCompatibleVersions
Value : {1.0, 2.0, 3.0, 4.0...}
Name  : PSCompatibleVersions

Key   : BuildVersion
Value : 10.0.20348.2110
Name  : BuildVersion

Key   : CLRVersion
Value : 4.0.30319.42000
Name  : CLRVersion

Key   : WSManStackVersion
Value : 3.0
Name  : WSManStackVersion

Key   : PSRemotingProtocolVersion
Value : 2.3
Name  : PSRemotingProtocolVersion

Key   : SerializationVersion
Value : 1.1.0.1
Name  : SerializationVersion

gibi916 avatar Dec 22 '23 15:12 gibi916

Any new on that ? I need to configured the authenticationStrength through M365 DSC. So "AuthenticationStrength = "Multifactor authentication";" is not taken into account.

AADConditionalAccessPolicy "AADConditionalAccessPolicy-KG - Default Users Policy (Device Compliant Based)"
        {
            AuthenticationContexts               = @();
            AuthenticationStrength               = "Multifactor authentication";
            BuiltInControls                      = @("compliantDevice");
            ClientAppTypes                       = @("all");
            CloudAppSecurityType                 = "";
            Credential                           = $Credscredential;
            CustomAuthenticationFactors          = @();
            DeviceFilterRule                     = "";
            DisplayName                          = "Default Users Policy (device compliant or authenticationStrength)";
            Ensure                               = "Present";
            ExcludeApplications                  = @();
            ExcludeExternalTenantsMembers        = @();
            ExcludeExternalTenantsMembershipKind = "";
            ExcludeGroups                        = @();
            ExcludeLocations                     = @();
            ExcludePlatforms                     = @();
            ExcludeRoles                         = @();
            ExcludeUsers                         = @();
            GrantControlOperator                 = "OR";
            Id                                   = "";
            IncludeApplications                  = @("All");
            IncludeExternalTenantsMembers        = @();
            IncludeExternalTenantsMembershipKind = "";
            IncludeGroups                        = @();
            IncludeLocations                     = @();
            IncludePlatforms                     = @();
            IncludeRoles                         = @();
            IncludeUserActions                   = @();
            IncludeUsers                         = @("All");
            PersistentBrowserMode                = "";
            SignInFrequencyType                  = "";
            SignInRiskLevels                     = @();
            State                                = "disabled";
            UserRiskLevels                       = @();
        }

Thanks

gbs916 avatar Apr 25 '24 13:04 gbs916