Как отменить / очистить сеанс во время федеративного выхода - PullRequest
0 голосов
/ 23 октября 2018

Мы внедрили модуль HTTP (используя global.asax) в наше приложение SharePoint ADFS для объединения, которое выполняет некоторые проверки после проверки подлинности, сохраняет некоторые данные в объекте состояния сеанса ASP.NET, чтобы гарантировать, что проверки не произойдут при последующихциклические переходы.

Мы заметили, что идентификатор сеанса ASP.NET не очищается при федеративном выходе и перерабатывается при входе в систему с другим пользователем в том же браузере.Мы хотим подключиться к одному из событий выхода из модуля федеративной проверки подлинности для явного вызова session.Clear () и session.Abandon (), чтобы гарантировать, что новый идентификатор сеанса назначается при каждом входе в систему снова.

Я не могу получитьоднако событие SessionAuthenticationModule_SigningOut должно сработать.В качестве альтернативы я мог бы прекратить / очистить любой сеанс во время события SessionSecurityTokenReceived, но не уверен, что это самый чистый подход.Есть мысли о том, что мне не хватает?Приведенный ниже код помещается в файл Global.asax.

public override void Init()
    {
        FederatedAuthentication.SessionAuthenticationModule.SessionSecurityTokenReceived += new EventHandler<SessionSecurityTokenReceivedEventArgs>(SessionAuthenticationModule_SessionSecurityTokenReceived);
        FederatedAuthentication.SessionAuthenticationModule.SigningOut += new EventHandler<SigningOutEventArgs>(SessionAuthenticationModule_SigningOut);
        base.Init();
    }

void SessionAuthenticationModule_SigningOut(object sender, SigningOutEventArgs e)
    {
        this.Session.Clear();
        this.Session.Abandon();
    }

Редактировать: после повторного развертывания библиотеки DLL, я получил событие для запуска.Похоже, объект состояния сеанса недоступен в этом обработчике событий, поэтому я не уверен, какие другие события я могу подключить для выполнения этого?

...