Проверка результатов WIF и SOAP - Windows Identity Foundation снова бьет :( - PullRequest
2 голосов
/ 25 августа 2011

Я использую IdentityServer для аутентификации пользователей на платформе Silverlight 4. (WS-Trust).
Когда пользователь отправляет правильные учетные данные, все в порядке, конечно, и я создаю токен-cookie с дополнительными требованиями к RP для приложения Silverlight.
Когданеверный пароль. Приложение Silverlight получает код состояния HTTP 500 (стандартное значение для отправки исключений SOAP, определенных в / в спецификации SOAP).

Стек Silverlight http игнорирует результаты с таким кодом состояния, поэтому я пытался заставить STS изменить этот код состояния перед отправкой его клиенту.Я пытался сделать это, установив / зарегистрировав свой экземпляр объекта с интерфейсом IDispatchMessageInspector на конечной точке, чтобы изменить код состояния на лету (аналогично SilverlightFaultBehavior выполняет изменение для служб WCF, взаимодействующих с Silverlight), но, похоже, MS Guys снова сделали что-то странное (или я чего-то не знаю).

Когда результат в порядке (пароль в порядке), я могу изменить код состояния HTTP, и мой метод вызывается для объекта с интерфейсом IDispatchMessageInspector, но , если пароль неверен метод для моего объекта проверкине вызывается вообще, и я не могу изменить результат (код состояния HTTP), поэтому результат снова равен 500.

IdentityServer просто создает экземпляр хост-объекта WSTrustServiceHost с правильной конфигурацией, поэтому, похоже, вся обработка WSTrust выполняетсяТолько WIF.

Я не знаю, что может произойти, если токен уже устарел.WIF также генерирует исключение с HTTP-статусом 500?Можно ли читать исключения, сгенерированные WIF на платформе Silverlight?

Silverlight 5 должен поддерживать WS-Trust, но если сервер STS отправляет HTTP-статус 500, он снова игнорирует информацию об исключении?Кто-нибудь тестировал его с Silverlight 5 или, может быть, знает решение такой проблемы?

1 Ответ

0 голосов
/ 25 августа 2011

Вы можете получить любой код состояния HTTP в Silverlight, если используете сетевой стек клиента. По умолчанию Silverlight направляет все HTTP-запросы через браузер, что устанавливает определенные ограничения.

Как: указать HTTP-обработку браузера или клиента (MSDN)

...