Использование WIF, WCF в клиенте Silverlight, обращающемся к внутренним службам WCF.
При выходе из приложения используется метод SignOut модуля проверки подлинности федерации, который в свою очередь вызывает DeleteSessionTokenCookie модуля проверки подлинности сеанса (SAM) для локального выхода RP (проверяющей стороны). Выход в IP (выдающая сторона) впоследствии называется. Все это работает как ожидалось.
Я столкнулся со следующим несколькими сценариями браузера, связанными с общим сеансом, который приводит к проблеме «удаленный сервер возвратил ошибку не найдена». Если используется IE "New Session", это не проблема.
Шаги:
- Используйте ярлык IE, чтобы открыть экземпляр браузера 1, перейти к приложению и войти в систему.
- Используйте ярлык IE, чтобы открыть экземпляр браузера 2, перейти к приложению и войти в систему.
- Выйти из приложения в экземпляре браузера 2.
- Выполните любую операцию, которая требует связи с сервером. например Выйдите из экземпляра браузера приложения 1.
Результат: исключение «удаленный сервер возвратил ошибку не найдена»
Можно ли обнаружить, что токен WIF был удален до выполнения вызова WCF в экземпляре браузера 1, и уведомить об этом пользователя. Метод IdentityModelServiceAuthorizationManager.CheckAccessCore (OperationContext) используется для проверки доступа к службе (авторизации) до выполнения каких-либо вызовов службы WCF. Можно ли получить доступ и оценить информацию, связанную с маркерами сеанса, в это время? Или есть другой подход, который можно использовать?