Выход WIF из провайдера идентификации - PullRequest
1 голос
/ 27 января 2012

Можно ли выйти из проверяющей стороны из провайдера Identity без вызова 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);

Ответы [ 3 ]

2 голосов
/ 31 мая 2013

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

Каждый поставщик Identity отличается в отношении сохранения файлов 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).

2 голосов
/ 27 января 2012

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

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

0 голосов
/ 30 октября 2013

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

var fedModule = FederatedAuthentication.WSFederationAuthenticationModule;

fedModule.SignOut (true);Response.Redirect (new SignOutRequestMessage (новый Uri (fedModule.Issuer), fedModule.Realm) .WriteQueryString ());

...