From f3515686e606cbd3b8793eb377015170ff040a3d Mon Sep 17 00:00:00 2001 From: Marcos Oviedo Date: Mon, 18 Dec 2023 11:10:58 -0300 Subject: [PATCH] Adding support for MS-MDE2 version 6.0 (#15701) # Checklist for submitter If some of the following don't apply, delete the relevant line. - [ ] Changes file added for user-visible changes in `changes/` or `orbit/changes/`. See [Changes files](https://fleetdm.com/docs/contributing/committing-changes#changes-files) for more information. - [ ] Manual QA for all new/changed functionality --- server/fleet/microsoft_mdm.go | 13 ++++++++++--- server/mdm/microsoft/syncml/syncml.go | 8 ++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/server/fleet/microsoft_mdm.go b/server/fleet/microsoft_mdm.go index 1ad124cf42..0e771084d9 100644 --- a/server/fleet/microsoft_mdm.go +++ b/server/fleet/microsoft_mdm.go @@ -147,9 +147,16 @@ func (req *SoapRequest) IsValidDiscoveryMsg() error { return errors.New("invalid discover message: XMLNS") } - // Ensure that only valid versions are supported - if req.Body.Discover.Request.RequestVersion != syncml.EnrollmentVersionV4 && - req.Body.Discover.Request.RequestVersion != syncml.EnrollmentVersionV5 { + // Check if the request version is one of the defined enrollment versions + versionFound := false + for _, v := range syncml.SupportedEnrollmentVersions { + if req.Body.Discover.Request.RequestVersion == v { + versionFound = true + break + } + } + + if !versionFound { return errors.New("invalid discover message: Request.RequestVersion") } diff --git a/server/mdm/microsoft/syncml/syncml.go b/server/mdm/microsoft/syncml/syncml.go index 4643c1f357..fe0211fb50 100644 --- a/server/mdm/microsoft/syncml/syncml.go +++ b/server/mdm/microsoft/syncml/syncml.go @@ -173,14 +173,14 @@ const ( FleetOSUpdateTargetLocURI = "/Vendor/MSFT/Policy/Config/Update" ) +// Supported MS-MDE2 enrollment versions +var SupportedEnrollmentVersions = []string{"4.0", "5.0", "6.0"} + // MS-MDE2 Message constants const ( - // Minimum supported version + // Default MS-MDE2 enrollment protocol version EnrollmentVersionV4 = "4.0" - // Maximum supported version - EnrollmentVersionV5 = "5.0" - // xsi:nil indicates value is not present DefaultStateXSI = "true"