Я использую 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 или, может быть, знает решение такой проблемы?