Я новичок в 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 выйдет из системы?
Это может быть очень запутанным. Пожалуйста, оставьте любые комментарии, если вы найдете что-то неясное или нуждаетесь в дальнейшем объяснении.
Могу ли я узнать, какой метод будет вызываться в приложении, чтобы я мог очистить собственное состояние сеанса? – KenLai
Существует несколько событий. WSFederationAuthenticationModule: SigningOut, SignedOut и SignedOutError. SessionAuthenticationModule: имеет те же события. Существует два набора методов signin и signout, тех, кто делает и не запускает события. Он очень гибкий. Взгляните на книги Витторио Берточчи и документацию .NET 4.5. – paullem