Gestion des messages d'erreur de découverte automatique

Découvrez les différents types d’erreurs de découverte automatique et la marche à suivre.

La découverte automatique permet à vos applications de récupérer automatiquement les informations de configuration et elle fonctionne parfaitement. Toutefois, les choses ne sont pas toujours conformes à la planification. Examinons les erreurs courantes susceptibles de se produire et vous pouvez les gérer afin de réduire le besoin d’inviter votre utilisateur à configurer manuellement votre client.

Erreurs d’état HTTP

Le premier type d’erreur que vous pouvez rencontrer lors de l’envoi de demandes de découverte automatique est l’état HTTP. Si l’état HTTP de votre réponse est autre que 200 (OK), la charge utile de la réponse ne contient pas la réponse de découverte automatique que vous recherchez. Par souci de simplicité, nous pouvons regrouper les codes d’État non 200 en trois catégories.

Tableau 1. Codes d’état HTTP

Code d’état Type d’erreur Pour gérer...
301 ou 302
Erreur de redirection
Renvoyez votre requête à l’URI contenu dans l’en-tête de réponse HTTP « location ». Pour plus d’informations, consultez la rubrique gestion des erreurs de redirection.
401
Erreur non autorisée
Étant donné que le processus de découverte automatique implique de tenter plusieurs URL potentielles, vous pouvez obtenir cette URL sur une seule URL pour qu’elle accepte vos informations d’identification. Pour cette raison, vous ne devez pas prendre en compte une seule erreur 401 pour indiquer que les informations d’identification ne sont pas valides. Toutefois, si vous recevez des erreurs 401 à partir de plusieurs URL, vous pouvez inviter l’utilisateur à entrer de nouveau son mot de passe (le cas échéant).
Tout autre État autre qu' 200
Erreur de point de terminaison de découverte automatique non valide
Considérez l’URL qui renvoie tout autre code d’État non 200 comme non valide et continuez à essayer l’URL suivante dans votre liste.

Erreurs de découverte automatique

Même si vous obtenez un code d’état 200 (OK) après avoir envoyé une demande de découverte automatique, cela ne signifie pas que le serveur a envoyé les informations dont vous avez besoin. L’état 200 uniquement signifie que vous avez une réponse de découverte automatique et que cette réponse peut contenir une erreur au sein de la charge utile. L’emplacement des informations relatives à l’erreur diffère selon que le format est SOAP ou POX.

Erreurs de découverte automatique SOAP

Pour la découverte automatique SOAP, la réponse peut contenir un ou plusieurs éléments ErrorCode (SOAP) , à différents endroits. En règle générale, vous pouvez vous attendre à ce qu’il s’agit d’un élément enfant de l’élément de réponse (SOAP) et de l’autre en tant qu’enfant de chaque élément UserResponse (SOAP) dans la réponse. Vous pouvez également rencontrer un élément enfant d’un élément UserSettingError (SOAP) , s’il en existe une. Le contexte de l’erreur dépend de l’emplacement de l’élément ErrorCode , comme suit :

  • En tant qu’élément enfant de l’élément Response , l’élément ErrorCode représente une erreur qui s’applique à l’ensemble de la requête.

  • En tant qu’enfant de l’élément UserResponse , il représente une erreur qui s’applique uniquement à cet utilisateur spécifique.

  • En tant qu’enfant d’un élément UserSettingError , il représente une erreur qui s’applique à un paramètre spécifique qui a été demandé.

Examinons un exemple de réponse. Dans cet exemple, l’élément ErrorCode sous l’élément Response a la valeur « NOERROR », ce qui indique une réussite globale. Toutefois, l’élément ErrorCode sous l’élément UserResponse a la valeur « RedirectAddress », ce qui indique qu’une erreur s’est produite pour cet utilisateur particulier.

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:a="http://www.w3.org/2005/08/addressing">
  <s:Header>
    <a:Action s:mustUnderstand="1">https://schemas.microsoft.com/exchange/2010/Autodiscover/Autodiscover/GetUserSettingsResponse</a:Action>
    <h:ServerVersionInfo xmlns:h="https://schemas.microsoft.com/exchange/2010/Autodiscover" 
        xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
      <h:MajorVersion>14</h:MajorVersion>
      <h:MinorVersion>3</h:MinorVersion>
      <h:MajorBuildNumber>136</h:MajorBuildNumber>
      <h:MinorBuildNumber>1</h:MinorBuildNumber>
      <h:Version>Exchange2010_SP2</h:Version>
    </h:ServerVersionInfo>
  </s:Header>
  <s:Body>
    <GetUserSettingsResponseMessage xmlns="https://schemas.microsoft.com/exchange/2010/Autodiscover">
      <Response xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        <ErrorCode>NoError</ErrorCode>
        <ErrorMessage />
        <UserResponses>
          <UserResponse>
            <ErrorCode>RedirectAddress</ErrorCode>
            <ErrorMessage>Redirection address.</ErrorMessage>
            <RedirectTarget>elvin@mail.contoso.com</RedirectTarget>
            <UserSettingErrors />
            <UserSettings />
          </UserResponse>
        </UserResponses>
      </Response>
    </GetUserSettingsResponseMessage>
  </s:Body>
</s:Envelope>

L’article ErrorCode (SOAP) contient la liste complète des erreurs possibles. La plupart de ces éléments indiquent une erreur irrécupérable, mais quelques mérites de gestion spéciale.

Tableau 2. Valeurs de code d’découverte automatique SOAP

Valeur ErrorCode Pour gérer...
RedirectAddress
Redémarrage de la découverte automatique avec une nouvelle adresse de messagerie avec l’adresse de messagerie dans l’élément RedirectTarget (SOAP) .
RedirectUrl
Renvoi de votre requête à une nouvelle URL vers l’URL dans l’élément RedirectTarget .
ServerBusy
Renouvelez cette URL après un petit délai. Vous pouvez patienter pendant un laps de temps défini ou simplement déplacer cette URL à la fin de la liste des URL à essayer. Si vous recevez cette erreur plusieurs fois à partir d’une URL, vous devez considérer que l’URL n’est pas valide.

Erreurs de découverte automatique POX

Le service de découverte automatique POX signale les erreurs un peu différemment. Les erreurs non récupérables sont contenues dans l’élément Error (POX) . L’article ErrorCode (POX) contient la liste complète des codes d’erreur possibles.

Les erreurs de redirection sont contenues dans l’élément action (POX) . Toute valeur de l’élément action autre que « paramètres » indique une erreur de redirection.

Tableau 3. Valeurs ErrorCode découverte automatique ErrorCode

Valeur de l’action Pour gérer...
redirectAddr
Redémarrage de la découverte automatique avec une nouvelle adresse de messagerie avec l’adresse de messagerie dans l' RedirectAddr (POX) .
redirectUrl
Renvoi de votre requête à une nouvelle URL vers l’URL dans l’élément redirectUrl (POX) .

Dans cet exemple, l’élément action a la valeur « redirectAddr », ce qui indique qu’une nouvelle demande doit être envoyée avec la nouvelle adresse e-mail contenue dans l’élément redirectAddr .

<?xml version="1.0" encoding="utf-8"?>
<Autodiscover xmlns="https://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
  <Response xmlns="https://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
    <Account>
      <Action>redirectAddr</Action>
      <RedirectAddr>elvin@mail.contoso.com</RedirectAddr>
    </Account>
  </Response>
</Autodiscover>

Gestion des erreurs de redirection

Vous pouvez gérer les scénarios d’erreur de redirection de deux manières :

  • En redémarrant la découverte automatique avec une nouvelle adresse de messagerie.

  • En renvoyant votre demande à une nouvelle URL.

Les deux scénarios nécessitent une validation avant de continuer.

Redémarrage de la découverte automatique avec une nouvelle adresse de messagerie

Lorsque vous obtenez une nouvelle adresse de messagerie dans une réponse de redirection de découverte automatique, vérifiez d’abord que la nouvelle adresse de messagerie fournie dans la réponse d’erreur de redirection n’est pas la même adresse que celle que vous avez envoyée dans la demande ayant provoqué l’erreur. Si c’est le cas, ne redémarrez pas la découverte automatique et considérez plutôt l’URL qui a généré la réponse pour qu’elle ne soit pas valide.

Si la nouvelle adresse de messagerie est différente, ignorez votre liste existante d’URL de point de terminaison de découverte automatique potentielles et générez une nouvelle liste basée sur la nouvelle adresse de messagerie.

Renvoi de votre requête à une nouvelle URL

Lorsque vous obtenez une nouvelle URL dans une réponse de redirection de découverte automatique, vous devez d’abord valider l’URL comme suit :

  • Vérifiez que l’URL est une URL HTTPs.

  • Vérifiez que vous n’avez pas reçu une erreur de cette URL avec l’adresse de messagerie actuelle.

  • Si applicable à votre application, Informez l’utilisateur de la redirection et demandez-lui l’autorisation de suivre la redirection.

  • Envoyez une demande à l’URL et Vérifiez que le certificat SSL présenté par le serveur est valide.

Si l’URL réussit la validation, renvoyez la demande à cette nouvelle URL.

Voir aussi