WIF - FederatedSignOut не выводит пользователя из системы всех сайтов - PullRequest
1 голос
/ 22 ноября 2011

Я использую Windows Identity Foundation. (С некоторыми сайтами MVC 2.0)

У меня реальная проблема с подписью кого-либо из всех сайтов, защищенных WIF.

Похоже, мой выход только из людей на текущем сайте.

Это мой код

public void FederatedSignOut(string replyUrl)
       {             

        var authModule = FederatedAuthentication.WSFederationAuthenticationModule;
        WSFederationAuthenticationModule.FederatedSignOut(new Uri(authModule.Issuer),  new Uri(replyUrl));
     }

После запуска этого кода я все еще могу просматривать любые другие сайты, которые посетил пользователь. Но я вышел из сайта, из которого вышел.

Работает ли федеративный выход из системы?

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

Ответы [ 3 ]

1 голос
/ 22 ноября 2011

WIF имеет элемент управления FederatedPassiveSignInStatus, который делает всю работу за вас.

По сути, это отправляет команду WS-Federation "wa = wsignout1.0" в STS. Однако STS может не реализовать это. ADFS делает.

1 голос
/ 22 ноября 2011

Да, федеративный выход работает, но не всегда :-). Какой СТС вы используете? (например, ADFS? ваша собственная?)

Здесь есть некоторая вводная информация: http://msdn.microsoft.com/en-us/library/ff359102.aspx#sec9

Посмотрите, как наши "mock" sts обрабатывают Sign Out.

0 голосов
/ 20 июля 2016

При выходе из моего приложения на внешние sts я выписываю свое приложение, но все равно остаюсь в системе ntexternal sts OKTA

WSFederationAuthenticationModule fam = FederatedAuthentication.WSFederationAuthenticationModule;`

    // Native FederatedSignOut doesn't seem to have a way for finding/registering realm for singout, get it from the FAM
    string wrealm = string.Format("wtrealm={0}", fam.Realm);

    // Check where to return, if not set ACS will use Reply address configured for the RP
    string wreply = !string.IsNullOrEmpty(reply) ? reply : (!string.IsNullOrEmpty(fam.Reply) ? fam.Reply : null);

    // Create basic url for signout (wreply is set by native FederatedSignOut)
    string signOutUrl = WSFederationAuthenticationModule.GetFederationPassiveSignOutUrl(fam.Issuer, null, wrealm);


    WSFederationAuthenticationModule.FederatedSignOut(new Uri(signOutUrl), !string.IsNullOrEmpty(wreply) ? new Uri(wreply) : null);
...