Spécification de l'authentification non-Kerberos dans les projets Visual Studio

Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.

Lorsque vous travaillez dans Visual Studio 2005, certains mécanismes d'authentification impliquent des étapes de configuration supplémentaires. Par exemple, l'authentification Kerberos requiert un enregistrement du nom principal de service (SPN, Service Principal Name) et d'autres étapes. Pour plus d'informations, consultez Inscription de noms de principaux du service Kerberos à l'aide de Http.sys.

Les points de terminaison HTTP configurés pour utiliser l'authentification intégrée peuvent répondre à des clients utilisant le modèle d'authentification Kerberos ou NTLM. Le modèle effectivement sélectionné et utilisé par le serveur (Kerberos ou NTLM) dépend du modèle utilisé par le client lorsqu'il demande une authentification. Pour plus d'informations, consultez Types d'authentification du point de terminaison.

Cette rubrique fournit des détails sur la manière de modifier un projet Visual Studio 2005 pour que le client des services Web demande un modèle d'authentification autre que Kerberos lorsque l'authentification intégrée est sélectionnée sur le serveur comme étant le type d'authentification.

En règle générale, lorsque vous développez une application cliente dans Visual Studio 2005, vous devez configurer les informations d'identification à utiliser avec vos services Web XML natifs dans l'implémentation de SQL Server. En supposant que vous utilisiez l'authentification intégrée, vous pourriez écrire un code de la forme :

myServer.sql_endpoint proxy = new myServer.sql_endpoint();
proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;

Toutefois, si l'authentification Kerberos n'a pas été configurée correctement pour fonctionner à partir d'autres ordinateurs (enregistrement du nom SPN, etc.), Visual Studio 2005 essaiera toujours d'utiliser Kerberos comme modèle d'authentification, sauf si vous le désactivez explicitement comme modèle d'authentification approuvé sur le point de terminaison HTTP (sql_endpoint) en sélectionnant le type d'authentification NTLM, BASIC ou DIGEST. Vous avez la possibilité de préciser que Visual Studio 2005 utilise un autre type d'authentification pris en charge, par exemple NTLM.

Le code suivant montre comment remplacer le modèle d'authentification utilisé par Visual Studio 2005 et faire en sorte que l'application cliente demande un mécanisme d'authentification NTLM :

mattm1.sql_endpoint proxy = new mattm1.sql_endpoint();
System.Net.CredentialCache myCreds = new System.Net.CredentialCache();

myCreds.Add(new Uri(proxy.Url), "NTLM", System.Net.CredentialCache.DefaultCredentials.GetCredential(new Uri(proxy.Url), "NTLM"));
proxy.Credentials = myCreds;

Bien que le code précédent vous permette de forcer Visual Studio 2005 à utiliser NTLM plutôt que Kerberos sur un point de terminaison INTEGRATED, il est recommandé de créer un point de terminaison configuré avec AUTHENTICATION=NTLM pour utiliser NTLM lorsque des problèmes de nom SPN empêchent d'utiliser Kerberos.

Autres contraintes de configuration pour l'environnement de développement

Les modifications de code mentionnées dans la section précédente permettent à l'application cliente de spécifier et d'utiliser un modèle d'authentification autre que Kerberos, mais d'autres tâches sont nécessaires à la prise en charge de l'application lorsque vous l'exécutez et la testez dans l'environnement de développement.

Par défaut, la fonctionnalité d'ajout de référence Web de Visual Studio utilise toujours Kerberos lorsqu'elle essaie de récupérer la réponse WSDL du service Web. Vous pouvez empêcher ce comportement en procédant comme suit :

  1. Configurez l'authentification Kerberos correctement pour votre environnement de développement. Cette étape comprend l'enregistrement des noms SPN Kerberos pour vous-même en tant qu'utilisateur unique ou, si nécessaire, pour le groupe de domaine des développeurs. Pour plus d'informations, consultez Inscription de noms de principaux du service Kerberos à l'aide de Http.sys.

  2. Désactivez temporairement Kerberos sur votre point de terminaison. En utilisant la procédure ALTER ENDPOINT suivante pour passer en mode DIGEST, vous pourrez obtenir correctement la réponse WSDL.

    ALTER ENDPOINT endPointName
    AS HTTP (
       AUTHENTICATION = DIGEST
    )
    
  3. Ajoutez la référence Web à votre projet Visual Studio 2005.

  4. Rétablissez le mode INTEGRATED sur le point de terminaison, de la manière suivante :

    ALTER ENDPOINT endPointName
    AS HTTP (
       AUTHENTICATION = INTEGRATED
    )
    

Il existe une autre solution :

  1. Récupérez la réponse WSDL via un autre mécanisme, par exemple en utilisant Internet Explorer et en enregistrant la réponse WSDL dans un fichier.

  2. Ajoutez la référence Web dans Visual Studio à partir de ce fichier et non pas en tant qu'URL : http://MyServer/sql_endpoint?wsdl.