Valider un certificat de serveur pour l’API managée EWSValidate a server certificate for the EWS Managed API

Découvrez comment créer et faire référence à une méthode de rappel de validation de certificat afin que vous pouvez effectuer des demandes d’API managées à un serveur Exchange.Learn how to create and reference a certificate validation callback method so that you can make EWS Managed API requests to an Exchange server.

Par défaut, les versions d’Exchange commençant par Exchange 2007 SP1 utilisent X509 signé automatiquement des certificats pour authentifier les appels EWS.By default, versions of Exchange starting with Exchange 2007 SP1 use self-signed X509 certificates to authenticate calls from EWS. Lorsque vous utilisez l’API managée EWS, vous devez créer une méthode de rappel de validation de certificat ; dans le cas contraire, les demandes d’API managées échouera.When you are using the EWS Managed API, you need to create a certificate validation callback method; otherwise, EWS Managed API requests will fail. Si vous utilisez le service de découverte automatique, l’appel à la méthode Autodiscover des API gérée EWS échoue avec une erreur AutodiscoverLocalException .If you are using the Autodiscover service, the call to the EWS Managed API Autodiscover method will fail with an AutodiscoverLocalException error. Si vous utilisez un proxy de service web généré par le web, vous devrez également créer une méthode de rappel de validation, selon la façon dont le serveur proxy est créé.If you are using a web-generated web service proxy, you might also have to create a validation callback method, depending on how the proxy is created.

Conditions requises pour créer une méthode de rappel de validationPrerequisites for creating a validation callback method

Pour configurer pour valider un certificat de serveur, assurez-vous que les conditions suivantes sont remplies :To set up to validate a server certificate, ensure that the following are true:

  • Votre serveur Exchange utilise un certificat auto-signé pour EWS.Your Exchange server is using a self-signed certificate for EWS. Si l’administrateur a installé un certificat valide qui authentifie à un certificat racine, il est inutile créer une méthode de rappel de validation.If the administrator has installed a valid certificate that traces to a root certificate, you do not need to create a validation callback method.

  • Vous créez une application managée qui inclut une référence à l’espace de noms .NET Framework requises suivantes :You are creating a managed application that includes a reference to the following required .NET Framework namespaces:

    • System.NetSystem.Net
    • System.Net.SecuritySystem.Net.Security
    • System.Security.Cryptography.X509CertificatesSystem.Security.Cryptography.X509Certificates

Exemple : De méthode de rappel pour valider un certificat de serveur pour l’API managée EWSExample: Callback method to validate a server certificate for the EWS Managed API

L’exemple de code suivant montre comment créer un X509 méthode de rappel de validation de certificat pour l’API managée EWS.The following code example shows how to create an X509 certificate validation callback method for the EWS Managed API. Cette méthode est validée un X509 du certificat et retourne true uniquement si un des critères suivants sont remplie :This method will validate an X509 certificate and only return true when either of the following criteria are met:

  • Le certificat est valide et traces retour à un certificat racine valide.The certificate is valid and traces back to a valid root certificate.
  • Le certificat est valide et est auto-signé par le serveur qui a renvoyé.The certificate is valid and is self-signed by the server that returned it.

Important

La méthode de rappel de validation de certificat dans cet exemple fournit une sécurité suffisante pour le développement et le test des applications d’API managées.The certificate validation callback method in this example provides sufficient security for development and testing of EWS Managed API applications. Toutefois, il ne peut pas fournir une sécurité suffisante pour votre application déployée.However, it might not provide sufficient security for your deployed application. Vous assurer que la méthode de rappel de validation de certificat que vous utilisez répond aux exigences de sécurité de votre organisation.You should always make sure that the certificate validation callback method that you use meets the security requirements of your organization.

      private static bool CertificateValidationCallBack(
         object sender,
         System.Security.Cryptography.X509Certificates.X509Certificate certificate,
         System.Security.Cryptography.X509Certificates.X509Chain chain,
         System.Net.Security.SslPolicyErrors sslPolicyErrors)
    {
      // If the certificate is a valid, signed certificate, return true.
      if (sslPolicyErrors == System.Net.Security.SslPolicyErrors.None)
      {
        return true;
      }
      // If there are errors in the certificate chain, look at each error to determine the cause.
      if ((sslPolicyErrors & System.Net.Security.SslPolicyErrors.RemoteCertificateChainErrors) != 0)
      {
        if (chain != null && chain.ChainStatus != null)
        {
          foreach (System.Security.Cryptography.X509Certificates.X509ChainStatus status in chain.ChainStatus)
          {
            if ((certificate.Subject == certificate.Issuer) &&
               (status.Status == System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.UntrustedRoot))
            {
              // Self-signed certificates with an untrusted root are valid. 
              continue;
            }
            else
            {
              if (status.Status != System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.NoError)
              {
                // If there are any other errors in the certificate chain, the certificate is invalid,
             // so the method returns false.
                return false;
              }
            }
          }
        }
        // When processing reaches this line, the only errors in the certificate chain are 
    // untrusted root errors for self-signed certificates. These certificates are valid
    // for default Exchange server installations, so return true.
        return true;
      }
      else
      {
     // In all other cases, return false.
        return false;
      }
    }

Vous utilisez la classe ServicePointManager dans l’espace de noms .NET System.Net pour connecter une méthode de rappel de validation en définissant la propriété ServerCertificateValidationCallback .You use the ServicePointManager class in the .NET System.Net namespace to hook up a validation callback method by setting the ServerCertificateValidationCallback property. Vous pouvez utiliser le code similaire à l’exemple de code suivant pour définir la propriété ServerCertificateValidationCallback .You can use code similar to the following code example to set the ServerCertificateValidationCallback property.

ServicePointManager.ServerCertificateValidationCallback = CertificateValidationCallBack;

Étapes suivantesNext steps

Une fois que vous avez créé la méthode de rappel de validation pour l’API managée EWS, vous pouvez utiliser le service de découverte automatique pour obtenir des points de connexion et les utilisateurs et les paramètres de domaine à partir d’un serveur Exchange.After you have created the validation callback method for the EWS Managed API, you can use the Autodiscover service to get connection points and user and domain settings from an Exchange server. Pour plus d’informations, voir les articles suivants :For more information, see the following articles:

Voir aussiSee also