2014-11-04 2 views
0

Я новичок в WIF. И теперь я столкнулся с проблемой при выполнении одного знака.Single Sign Off не очищает собственную сессию RP

Ниже приведена предыстория моей проблемы: Прежде всего, я работаю над двумя старыми приложениями A и B, которые они хранят информацию пользователя в своей собственной переменной сеанса после аутентификации пользователя. А приложения А и Б имеют собственную локальную базу данных. Теперь моя работа заключается в использовании ADFS для включения SSO (Single Sign On) между двумя приложениями.

Теперь я создаю новый активный каталог для централизованного хранения пользователей. Когда пользователь пытается войти в приложение A через ADFS, приложение A необходимо проверить имя пользователя в заявлении, которое существует в локальной базе данных. Если существует, пользователь может войти в приложение A. В противном случае приложение A отклонит иск.

Вот техническая часть:

я продлить WSFederationAuthenticationModule и проверить поступающую заявку с локальной базой данных в методе OnSessionSecurityTokenCreated. Если результат сопоставлен, я извлекаю информацию пользователя из локальной базы данных и сохраняю ее в переменной сеанса (чтобы я мог минимизировать изменение кода). Приложение B использует тот же подход.

Я доволен тем, что вы здесь. Но проблема возникает, когда я выхожу с одного знака:

Когда я выхожу из приложения A, я сначала очищаю собственный сеанс в приложении А и вызываю метод WSFederationAuthenticationModule.FederatedSignOut. Однако приложение B не очищает собственную сессию. Я полагаю, что OnSignedOut в WSFederationAuthenticationModule будет вызван. Как я могу очистить сессию App B, когда приложение A выйдет из системы?

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

ответ

0

Вывод в WS-Fed осуществляется ADFS (он запрашивает gif с приложением /? Wa = wsignoutcleanup1.0) не только локально. Это единственный способ уведомить другое приложение. Ваше приложение должно перенаправить на ADFS с помощью signouturl. Затем оба приложения будут уведомлены и могут очистить свое состояние сеанса (с запросом gif).

+0

Могу ли я узнать, какой метод будет вызываться в приложении, чтобы я мог очистить собственное состояние сеанса? – KenLai

+0

Существует несколько событий. WSFederationAuthenticationModule: SigningOut, SignedOut и SignedOutError. SessionAuthenticationModule: имеет те же события. Существует два набора методов signin и signout, тех, кто делает и не запускает события. Он очень гибкий. Взгляните на книги Витторио Берточчи и документацию .NET 4.5. – paullem