Выход из WIF из поставщика удостоверений

Можно ли выйти из проверяющей стороны из поставщика удостоверений, не вызывая RP?

Я реализовал пользовательскую STS в MVC, которая выдает претензии к RP при входе, и моя логика выхода в IP работает при выполнении стандартного запроса на выход:

 // Process signout request
 SignOutRequestMessage signOutRequestMessage = (SignOutRequestMessage)WSFederationMessage.CreateFromUri(Request.Url);
 // get response to invoke signout
 HttpResponse signOutResponse = new HttpResponse(HttpContext.Response.Output);

Однако этот код не работает, когда я пытаюсь сделать то же самое из IP.

Uri uri = new Uri(string.Format("{0}://{1}/PassiveSTS?wa=wsignout1.0",request.Url.Scheme,request.Url.Host));
// Process signout request
SignOutRequestMessage signOutRequestMessage = (SignOutRequestMessage)WSFederationMessage.CreateFromUri(uri);
// get response to invoke signout
HttpResponse signOutResponse = new HttpResponse(context.Response.Output);

wif
person Kaido    schedule 27.01.2012    source источник


Ответы (3)


Как только ваш RP проверит выданный токен, RP установит свой собственный сеанс аутентификации с новым файлом cookie, который IP не может контролировать. Как правило, RP обрабатывает собственный выход, очищая этот файл cookie, что делает SessionAuthenitcationModule.SignOut().

Но если вы хотите, чтобы ваш IP-адрес завершил сеанс RP, я думаю, вам придется сделать это с помощью перенаправления.

person Andrew Lavers    schedule 27.01.2012

Для безопасной поддержки федеративного выхода необходимо выйти как из поставщика удостоверений, так и из приложения проверяющей стороны.

Каждый поставщик удостоверений отличается в отношении сохранения файлов cookie аутентификации, и вам необходимо понимать, как Fed-Signout обрабатывается вашим IDP (STS).

Дополнительные сведения об ADFS можно найти здесь:

http://social.technet.microsoft.com/wiki/contents/articles/1439.ad-fs-how-to-invoke-a-ws-federation-sign-out.aspx

Если вы хотите обмануть этот процесс, вы можете убедиться, что служба STS и приложение находятся в одном домене, и настроить домен cookie таким же образом (используя файлы cookie с подстановочными знаками).

person GaryMcAllister    schedule 31.05.2013

Нам нужно сделать ниже, чтобы выйти из RP и IDP

var fedModule = FederatedAuthentication.WSFederationAuthenticationModule;

fedModule.SignOut(true); Response.Redirect(new SignOutRequestMessage(new Uri(fedModule.Issuer), fedModule.Realm).WriteQueryString());

person Jashuva    schedule 30.10.2013
comment
Это сработало для меня, ура. Структура этого URL-адреса выхода поставщика удостоверений не очевидна. - person Aquinas; 29.03.2016