Я написал очень простой WFCSerice, который возвращает имя пользователя Windows. Вот на стороне клиента код:У базовой аутентификации нет заголовка безопасности
public Form1()
{
ServiceReference1.Service1Client s1 = new ServiceReference1.Service1Client();
s1.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
string str = s1.ReturnWindowsUsername();
InitializeComponent();
}
Я могу видеть учетные данные в HTTP-заголовке, используя Fidddler:
Я попытался сделать то же самое с обычной проверкой подлинности (доступ к другой веб служба, поддерживающая базовую аутентификацию). Вот на стороне клиента код:
public Form1()
{
InitializeComponent();
ServiceReference1.Service1Client s1 = new ServiceReference1.Service1Client();
s1.ClientCredentials.UserName.UserName = "testuser";
s1.ClientCredentials.UserName.Password = "testpassword";
string str = s1.GetData(1);
}
Вот скриншот из Fiddler при использовании обычной проверки подлинности:
Почему нет ничего в заголовке при использовании обычной проверки подлинности. Служба базовой проверки подлинности работает, как ожидалось. Вот ответ (интересно там, как представляется, два запроса и два ответа):
У вас есть анонимная аутентификация отключена и базовая аутентификация enabl в IIS? Заголовок авторизации добавляется только к запросу * после * запроса 401 с сервера. Если запрос разрешен анонимно, нет 401 и, следовательно, нет необходимости в заголовке. – user1429080
@ user1429080, оба включены. – w0051977
Попробуйте отключить анонимную аутентификацию. Есть ли разница? – user1429080