Utilisation de la découverte automatique pour rechercher des points de connexion
Découvrez comment utiliser le service de découverte automatique pour diriger votre application cliente vers le serveur Exchange approprié.
Le service de découverte automatique Exchange fournit à votre application cliente des paramètres de configuration pour les comptes de messagerie hébergés sur Exchange Online, Exchange Online dans le cadre de Office 365 ou sur un serveur Exchange exécutant une version d’Exchange à compter d’Exchange 2013. Le service de découverte automatique est un service web qui fournit des paramètres de configuration. Le service de découverte automatique est un service web qui fournit des informations de configuration de serveur Exchange à votre application cliente. Les applications clientes utilisent la découverte automatique pour déterminer le point de terminaison du service de découverte automatique pour une boîte aux lettres spécifique. Cet article explique comment suivre les réponses d’un serveur Exchange pour trouver le point de terminaison approprié.
Pour plus d’informations sur l’obtention des paramètres de configuration d’adresse de messagerie, consultez Obtenir des paramètres utilisateur à partir d’Exchange à l’aide de la découverte automatique et Obtenir des paramètres de domaine à partir d’un serveur Exchange.
Remarque
Le processus de recherche du point de terminaison approprié fait partie de la demande de paramètres utilisateur ou de domaine. Le service de découverte automatique utilise une série de réponses de redirection pour envoyer l’application cliente au point de terminaison approprié pour une adresse e-mail.
Vous pouvez utiliser l’une des technologies de développement Exchange suivantes pour accéder au service de découverte automatique :
API managée des services web Exchange (EWS)
EWS
Si vous utilisez EWS, recourez aux méthodes suivantes pour extraire des paramètres utilisateur :
Service de découverte automatique basé sur SOAP
Service de découverte automatique XML (POX)
Proxy généré automatiquement à partir du service de détection automatique SOAP ou XML
Pour plus d'informations sur ces méthodes, reportez-vous à la section Découverte automatique pour Exchange.
Pour plus d’informations sur ces technologies de développement Exchange, consultez Explorer l’API managée EWS, EWS et les services web dans Exchange.
L'API managée EWS fournit une interface basée sur des objets pour récupérer les paramètres de l'utilisateur. Si votre application cliente utilise du code managé, nous vous recommandons de choisir l'API managée EWS. L'interface API managée EWS optimisée pour un modèle d'objet simple présente des performances supérieures au proxy de service web généré automatiquement par défaut.
Si vous utilisez EWS, nous vous conseillons d’opter pour le service de découverte automatique SOAP, car il prend en charge un ensemble de fonctionnalités plus riche que le service de découverte automatique POX.
Conditions préalables à la recherche d’un point de terminaison
Avant de pouvoir créer une application cliente qui utilise le service de découverte automatique, vous devez avoir accès aux éléments suivants :
Exchange Online ou un serveur qui exécute une version d’Exchange à partir d’Exchange 2007 SP1. Si vous utilisez le service de découverte automatique soap, Exchange Online ou une version d’Exchange à partir d’Exchange 2010.
Un serveur Exchange qui est configuré pour accepter les connexions depuis votre application cliente. Pour plus d'informations sur la configuration de votre serveur Exchange, reportez-vous à la rubrique Contrôle de l'accès aux applications de client pour EWS dans Exchange.
Un compte autorisé à utiliser EWS. Pour plus d'informations sur la configuration d'un compte, reportez-vous à la rubrique Contrôle de l'accès aux applications de client pour EWS dans Exchange.
Remarque
Si vous utilisez l’API managée EWS, vous devez fournir un rappel de validation de certificat dans certains cas. Vous aurez peut-être également besoin d’un rappel de validation de certificat avec certaines bibliothèques proxy générées, telles que celles créées par Visual Studio. Pour plus d'informations, reportez-vous à la rubrique Valider un certificat de serveur pour l'API managée EWS.
Concepts de base pour la recherche d’un point de terminaison
Avant d’utiliser la découverte automatique pour rechercher un point de terminaison, vous devez connaître les concepts répertoriés dans le tableau suivant.
Concept | Description |
---|---|
Découverte automatique pour Exchange |
Fournit une vue d’ensemble du fonctionnement du service de découverte automatique. |
Si vous utilisez l'API managée EWS, vous gérez votre connexion à EWS à l'aide de la classe Microsoft.Exchange.WebServices.Data.ExchangeService dans l'espace de noms Microsoft.Exchange.WebServices.Data. Pour utiliser les exemples de code d’API managée EWS de cet article, vous devez référencer les espaces de noms suivants dans votre code :
System.Net
Microsoft.Exchange.WebServices.Data.ExchangeService
Rechercher le point de terminaison approprié à l’aide de l’API managée EWS
Si vous utilisez l’API managée EWS, les appels au service de découverte automatique sont gérés par la classe ExchangeService . Pour déterminer le point de terminaison correct pour un compte de messagerie, vous appelez la méthode AutodiscoverUrl sur un objet [ExchangeService]. L’exemple de code suivant montre comment définir le point de terminaison de service web EWS pour une adresse e-mail dans le fichier Exchange.asmx sur le serveur d’accès au client approprié à l’aide de l’API managée EWS.
NetworkCredential credentials = new NetworkCredential(securelyStoredEmail, securelyStoredPassword);
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013);
service.Credentials = credentials;
service.AutodiscoverUrl("User1@contoso.com");
Rechercher le point de terminaison approprié à l’aide d’EWS
Le service de découverte automatique SOAP peut utiliser une série de demandes et de réponses pour diriger votre application vers le point de terminaison approprié pour EWS. Pour plus d’informations sur le processus de détermination du point de terminaison correct pour un compte de messagerie, consultez Découverte automatique pour Exchange. Les exemples XML suivants illustrent la série de requêtes et de réponses auxquelles vous pouvez vous attendre lorsque vous effectuez une demande de découverte automatique SOAP pour trouver le point de terminaison approprié.
Demande de point de terminaison de découverte automatique SOAP
L’exemple suivant montre une requête XML envoyée au service de découverte automatique pour trouver le point de terminaison approprié.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:a="https://schemas.microsoft.com/exchange/2010/Autodiscover"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<a:RequestedServerVersion>Exchange2013</a:RequestedServerVersion>
<wsa:Action>https://schemas.microsoft.com/exchange/2010/Autodiscover/Autodiscover/GetUserSettings</wsa:Action>
<wsa:To>https://mail.microsoft.com/autodiscover/autodiscover.svc</wsa:To>
</soap:Header>
<soap:Body>
<a:GetUserSettingsRequestMessage xmlns:a="https://schemas.microsoft.com/exchange/2010/Autodiscover">
<a:Request>
<a:Users>
<a:User>
<a:Mailbox>User1@Contoso.com</a:Mailbox>
</a:User>
</a:Users>
<a:RequestedSettings>
<a:Setting>InternalEwsUrl</a:Setting>
<a:Setting>ExternalEwsUrl</a:Setting>
</a:RequestedSettings>
</a:Request>
</a:GetUserSettingsRequestMessage>
</soap:Body>
</soap:Envelope>
Réponse de redirection de découverte automatique SOAP
Le service de découverte automatique peut répondre avec l’une des deux réponses de redirection : une redirection HTTP 302 ou une réponse de redirection SOAP. Si la réponse du serveur Exchange est une redirection HTTP 302, l’application cliente doit vérifier que l’adresse de redirection est acceptable, puis suivre la réponse de redirection.
Importante
Pour connaître les critères de validation d’une réponse de redirection, consultez Découverte automatique pour Exchange.
Si le service de découverte automatique retourne une réponse de redirection, indiquée par l’élément ErrorCode de l’élément UserResponse , votre application cliente doit utiliser l’élément RedirectTarget pour construire une nouvelle demande de paramètres envoyée au serveur spécifié dans la réponse de redirection. L’exemple suivant montre une réponse de redirection du serveur.
<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>15</h:MajorVersion>
<h:MinorVersion>0</h:MinorVersion>
<h:MajorBuildNumber>682</h:MajorBuildNumber>
<h:MinorBuildNumber>1</h:MinorBuildNumber>
<h:Version>Exchange2013</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>User1@mail.Contoso.com</RedirectTarget>
<UserSettingErrors />
<UserSettings />
</UserResponse>
</UserResponses>
</Response>
</GetUserSettingsResponseMessage>
</s:Body>
</s:Envelope>
Après une redirection, le client utilise l’URL de redirection pour préparer une autre requête. Le code suivant montre un exemple de la requête que vous créez à partir de la réponse de redirection.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:a="https://schemas.microsoft.com/exchange/2010/Autodiscover"
xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<a:RequestedServerVersion>Exchange2013</a:RequestedServerVersion>
<wsa:Action>https://schemas.microsoft.com/exchange/2010/
Autodiscover/Autodiscover/GetUserSettings</wsa:Action>
<wsa:To>https://autodiscover.exchange.microsoft.com/autodiscover/autodiscover.svc</wsa:To>
</soap:Header>
<soap:Body>
<a:GetUserSettingsRequestMessage xmlns:a="https://schemas.microsoft.com/exchange/2010/Autodiscover">
<a:Request>
<a:Users>
<a:User>
<a:Mailbox>User1@mail.Contoso.com</a:Mailbox>
</a:User>
</a:Users>
<a:RequestedSettings>
<a:Setting>InternalEwsUrl</a:Setting>
<a:Setting>ExternalEwsUrl</a:Setting>
</a:RequestedSettings>
</a:Request>
</a:GetUserSettingsRequestMessage>
</soap:Body>
</soap:Envelope>
Lorsque l’application cliente a été dirigée vers le point de terminaison approprié pour le service de découverte automatique, le serveur envoie une réponse avec l’élément ErrorCode de l’élément UserResponse défini sur NoError et contenant les paramètres utilisateur demandés. Seuls les paramètres utilisateur demandés, InternalEwsUrl et ExternalEwsUrl, sont retournés. L’exemple suivant montre la réponse du serveur.
<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>15</h:MajorVersion>
<h:MinorVersion>0</h:MinorVersion>
<h:MajorBuildNumber>160</h:MajorBuildNumber>
<h:MinorBuildNumber>4</h:MinorBuildNumber>
<h:Version>Exchange2013</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>NoError</ErrorCode>
<ErrorMessage>No error.</ErrorMessage>
<RedirectTarget i:nil="true" />
<UserSettingErrors />
<UserSettings>
<UserSetting i:type="StringSetting">
<Name>InternalEwsUrl</Name>
<Value>https://server.Contoso.com/ews/exchange.asmx</Value>
</UserSetting>
<UserSetting i:type="StringSetting">
<Name>ExternalEwsUrl</Name>
<Value>https://server.Contoso.com/ews/exchange.asmx</Value>
</UserSetting>
</UserSettings>
</UserResponse>
</UserResponses>
</Response>
</GetUserSettingsResponseMessage>
</s:Body>
</s:Envelope>
Étapes suivantes
La recherche du point de terminaison en suivant le processus de découverte automatique retourne le domaine ou les paramètres utilisateur demandés. Pour plus d’informations sur l’établissement d’une demande de paramètres spécifiques, consultez les articles suivants :
- Obtenir des paramètres de domaine à partir d’un serveur Exchange
- Obtenir les paramètres de l'utilisateur Exchange à l'aide de découverte automatique