J'ai écrit un WFCSerice très simple qui renvoie le nom d'utilisateur Windows fourni. Voici le code côté client:L'authentification de base ne semble pas avoir d'en-tête de sécurité
public Form1()
{
ServiceReference1.Service1Client s1 = new ServiceReference1.Service1Client();
s1.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
string str = s1.ReturnWindowsUsername();
InitializeComponent();
}
je peux voir les informations d'identification dans l'en-tête HTTP à l'aide Fidddler:
J'ai essayé de faire la même chose avec l'authentification de base (accès à un autre web service prenant en charge l'authentification de base). Voici le code côté client:
public Form1()
{
InitializeComponent();
ServiceReference1.Service1Client s1 = new ServiceReference1.Service1Client();
s1.ClientCredentials.UserName.UserName = "testuser";
s1.ClientCredentials.UserName.Password = "testpassword";
string str = s1.GetData(1);
}
Voici la capture d'écran de Fiddler lorsque vous utilisez l'authentification de base:
Pourquoi est-il rien dans l'en-tête lors de l'utilisation d'authentification de base. Le service d'authentification de base semble fonctionner comme prévu. Voici la réponse (semble intéressant de noter qu'il y ait deux demandes et deux réponses):
Avez-vous l'authentification anonyme désactivée, et authentification de base enabl ed dans IIS? L'en-tête Authorization n'est ajouté à la requête * qu'après * un challenge 401 du serveur. Si la requête est autorisée de manière anonyme, il n'y a pas de 401 et donc pas besoin de l'en-tête. – user1429080
@ user1429080, les deux sont activés. – w0051977
Essayez de désactiver l'authentification anonyme. Est-ce que cela fait une différence? – user1429080