@@ -160,16 +160,22 @@ public virtual EntityDescriptor ReadIdPSsoDescriptor(string idPMetadataXml)
160160        { 
161161            var  metadataXmlDocument  =  idPMetadataXml . ToXmlDocument ( ) ; 
162162
163-             if  ( metadataXmlDocument . DocumentElement . NamespaceURI  !=  Saml2MetadataConstants . MetadataNamespace . OriginalString ) 
163+             var  entityDescriptorElement  =  metadataXmlDocument . DocumentElement . SelectSingleNode ( $ "//*[local-name()='{ Saml2MetadataConstants . Message . EntityDescriptor } ']")  as  XmlElement ; 
164+             if  ( entityDescriptorElement  ==  null ) 
165+             { 
166+                 throw  new  Saml2RequestException ( "EntityDescriptorElement element not found in Metadata." ) ; 
167+             } 
168+ 
169+             if  ( entityDescriptorElement . NamespaceURI  !=  Saml2MetadataConstants . MetadataNamespace . OriginalString ) 
164170            { 
165171                throw  new  Saml2RequestException ( "Not Metadata." ) ; 
166172            } 
167173
168-             EntityId  =  metadataXmlDocument . DocumentElement . Attributes [ Saml2MetadataConstants . Message . EntityId ] . GetValueOrNull < string > ( ) ; 
174+             EntityId  =  entityDescriptorElement . Attributes [ Saml2MetadataConstants . Message . EntityId ] . GetValueOrNull < string > ( ) ; 
169175
170-             Id  =  metadataXmlDocument . DocumentElement . Attributes [ Saml2MetadataConstants . Message . Id ] . GetValueOrNull < Saml2Id > ( ) ; 
176+             Id  =  entityDescriptorElement . Attributes [ Saml2MetadataConstants . Message . Id ] . GetValueOrNull < Saml2Id > ( ) ; 
171177
172-             var  idPSsoDescriptorElement  =  metadataXmlDocument . DocumentElement [ Saml2MetadataConstants . Message . IdPSsoDescriptor ,  Saml2MetadataConstants . MetadataNamespace . OriginalString ] ; 
178+             var  idPSsoDescriptorElement  =  entityDescriptorElement [ Saml2MetadataConstants . Message . IdPSsoDescriptor ,  Saml2MetadataConstants . MetadataNamespace . OriginalString ] ; 
173179            if  ( idPSsoDescriptorElement  !=  null ) 
174180            { 
175181                IdPSsoDescriptor  =  new  IdPSsoDescriptor ( ) . Read ( idPSsoDescriptorElement ) ; 
@@ -182,16 +188,22 @@ public virtual EntityDescriptor ReadSPSsoDescriptor(string spMetadataXml)
182188        { 
183189            var  metadataXmlDocument  =  spMetadataXml . ToXmlDocument ( ) ; 
184190
185-             if  ( metadataXmlDocument . DocumentElement . NamespaceURI  !=  Saml2MetadataConstants . MetadataNamespace . OriginalString ) 
191+             var  entityDescriptorElement  =  metadataXmlDocument . DocumentElement . SelectSingleNode ( $ "//*[local-name()='{ Saml2MetadataConstants . Message . EntityDescriptor } ']")  as  XmlElement ; 
192+             if  ( entityDescriptorElement  ==  null ) 
193+             { 
194+                 throw  new  Saml2RequestException ( "EntityDescriptorElement element not found in Metadata." ) ; 
195+             } 
196+ 
197+             if  ( entityDescriptorElement . NamespaceURI  !=  Saml2MetadataConstants . MetadataNamespace . OriginalString ) 
186198            { 
187199                throw  new  Saml2RequestException ( "Not Metadata." ) ; 
188200            } 
189201
190-             EntityId  =  metadataXmlDocument . DocumentElement . Attributes [ Saml2MetadataConstants . Message . EntityId ] . GetValueOrNull < string > ( ) ; 
202+             EntityId  =  entityDescriptorElement . Attributes [ Saml2MetadataConstants . Message . EntityId ] . GetValueOrNull < string > ( ) ; 
191203
192-             Id  =  metadataXmlDocument . DocumentElement . Attributes [ Saml2MetadataConstants . Message . Id ] . GetValueOrNull < Saml2Id > ( ) ; 
204+             Id  =  entityDescriptorElement . Attributes [ Saml2MetadataConstants . Message . Id ] . GetValueOrNull < Saml2Id > ( ) ; 
193205
194-             var  spSsoDescriptorElement  =  metadataXmlDocument . DocumentElement [ Saml2MetadataConstants . Message . SPSsoDescriptor ,  Saml2MetadataConstants . MetadataNamespace . OriginalString ] ; 
206+             var  spSsoDescriptorElement  =  entityDescriptorElement [ Saml2MetadataConstants . Message . SPSsoDescriptor ,  Saml2MetadataConstants . MetadataNamespace . OriginalString ] ; 
195207            if  ( spSsoDescriptorElement  !=  null ) 
196208            { 
197209                SPSsoDescriptor  =  new  SPSsoDescriptor ( ) . Read ( spSsoDescriptorElement ) ; 
0 commit comments