Я установил имя пользователя и пароль в ClientCredentials, но окно входа в систему все еще появляется. Зачем? - PullRequest
0 голосов
/ 11 августа 2009

У меня есть служба WCF, настроенная для использования базовой аутентификации по протоколу https:

  <basicHttpBinding>
    <binding name="secureTransport">
      <security mode ="Transport">
        <transport clientCredentialType="Basic"/>
      </security>
    </binding>
  </basicHttpBinding>

Я также указал пользовательский валидатор имени пользователя и пароля. Когда я вызываю этот сервис из консольного приложения, все работает как положено. Однако, когда я вызываю этот сервис из Silverlight 3, я получаю всплывающее окно входа в систему. В обоих случаях код одинаков и выглядит следующим образом:

        SecureRemoteBox.Service1Client client = new SecureRemoteBox.Service1Client();
        client.ClientCredentials.UserName.UserName = "test";
        client.ClientCredentials.UserName.Password = "pass";

Конфигурация безопасности клиента для консольного приложения

        <security mode="Transport">
        <transport clientCredentialType="Basic" proxyCredentialType="None" realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
        </security>

Конфигурация безопасности клиента для приложения SL3:

                <security mode="Transport" />

Я также пробовал «TransportWithMessageCredential», но с той же проблемой.

Что я делаю не так? Спасибо.

1 Ответ

0 голосов
/ 12 августа 2009

Боюсь, что Silverlight 3 не поддерживает базовую аутентификацию HTTP (досадно, я знаю). Лучший вариант для аутентификации - использовать поставщика членства asp.net и проверять аутентификацию в ваших сервисах WCF или передавать имя пользователя и пароль в качестве аргументов в ваши сервисы.

НТН

...