Основа идентификации Windows - выйти или обновить заявки - PullRequest
1 голос
/ 07 ноября 2011

Я использую Windows Identity Foundation для управления входом на наш сайт.

Когда пользователь входит в систему, я использую некоторую информацию в своем запросе для включения в претензии. Все работает нормально, но теперь мне нужно управлять этим сценарием:

  1. пользователь уже вошел в систему, прошел проверку подлинности и имеет действительный токен.
  2. Но пользователь решает снова зайти (через редирект с другого сайта)
  3. Так что его информация в его запросе отличается.
  4. Я хочу либо
    • Выйти из него - чтобы он естественно создал новый токен со своей новой информацией
    • ИЛИ обновите свой существующий токен.

Итак, мой вопрос:

  1. Как выйти из Windows Identity Foundation?
  2. Или Как мне обновить существующие претензии?

Я пробовал этот код:

  public void ExpireClaims(HttpContextBase httpContextBase)
    {
        var module =
            httpContextBase.ApplicationInstance.Modules["WSFederationAuthenticationModule"] as
            WSFederationAuthenticationModule;
        if (module == null)
        {
            return;
        }
        module.SignOut(true);
    }

Но модуль всегда нулевой.

и я попробовал это:

  public void FederatedSignOut(string replyUrl)
    {
        WSFederationAuthenticationModule.FederatedSignOut(null, new Uri(replyUrl));
    }

Но я получаю нулевое справочное исключение, когда я делаю это.

Большое спасибо.

1 Ответ

8 голосов
/ 09 ноября 2011

По сути, выход из системы - это просто удаление cookie, поэтому:

FormsAuthentication.SignOut

или

FederatedAuthentication.SessionAuthenticationModule.SignOut

или

FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie

будет работать.

Или используйте FederatedPassiveSignInStatus (должно быть в вашей панели инструментов). Установите для свойства SignOutAction значение FederatedSignOut, и элемент управления также очистит ваш сеанс STS.

...