Silverlight и WCF с аутентификацией Windows - PullRequest
0 голосов
/ 28 февраля 2011

Я пишу клиент Silverlight и решение библиотеки служб WCF в среде интрасети.

Насколько я понимаю, если я настрою проверку подлинности Windows, то вызовы методов службы будут успешными только в том случае, если вызывающий объект прошел проверку подлинности в Windows и мне не нужно писать код для предоставления учетных данных пользователя. У меня есть несколько вопросов по этому поводу.

  1. Я прав?

  2. Меня попросили увеличить время ожидания моего приложения (как это часто бывает с Интернет-приложениями), чтобы пользователь снова вошел в систему. Однако я включил «Интегрированную проверку подлинности Windows» в дополнительных параметрах IE и «Автоматический вход только в зону интрасети» в разделе «Безопасность». По сути, теперь пользователь не входит в мое приложение, а в IE, и Silverlight автоматически передает эти учетные данные в службу WCF. Я могу изменить на «Запрашивать имя пользователя и пароль», но тогда учетные данные будут потеряны только при закрытии IE, что я не могу сделать по таймауту. Даже если бы я мог, мне пришлось бы закрыть все открытые IE, которые участвовали в зоне интрасети, поскольку аутентификация, по-видимому, разделялась между ними.

  3. Возможно ли выдать себя за другого пользователя? Я видел код, который делает это из приложения Windows, но интеллектуальная логика при использовании Silverlight, по-видимому, не обеспечивает такую ​​же функциональность?

1 Ответ

0 голосов
/ 28 февраля 2011

Насколько я знаю, вы используете IIS Windows Authentification. Службы WCF можно настраивать независимо, и они также основаны на безопасности на основе идентичности Windows, но они немного сложнее, чем традиционный подход.

Ваши вопросы:

1.Чтобы отключить анонимных пользователей и разрешить только тем пользователям, которые прошли проверку подлинности в Windows, вы можете написать следующий код:

<authorization>
  <deny users="?"/>
</authorization>

После этого учетные данные пользователя будут запрашиваться и автоматически передаваться. И вам не нужно отправлять их из клиентского приложения. Если анонимная аутентификация отключена IIS, все будет работать без дополнительного кода.

2.Это нормально, IE и Chrome, в отличие от Firefox, не требуют учетных данных каждый раз, когда пользователь открывает веб-страницу. Если вы хотите обновить состояние приложения после истечения времени ожидания, вы можете сделать это, не запрашивая учетные данные, например, используя что-то вроде MessageBox.

3. Имитация работает только на стороне сервера. Но возможно написать необходимый код в службе WCF и вызвать его из клиента Silverlight.

...