2015-08-30 5 views
1

Я использую модуль WSFederationAuthentication для аутентификации. Я хочу это: после нажатия кнопки выхода из системы, он выдает (удаляет все файлы cookie) и перенаправляет страницу входа. У меня есть этот код для кнопки выхода из системы:Как заставить федеративный выезд перенаправить на страницу входа?

var ls = new LoginStatus(); 
ls.LogoutAction = LogoutAction.Redirect; 
ls.LogoutPageUrl = {some URL, where I have sign out code} 

SignOut часть:

Microsoft.IdentityModel.Web.WSFederationAuthenticationModule authModule = FederatedAuthentication.WSFederationAuthenticationModule; 
String signoutURL = WSFederationAuthenticationModule.GetFederationPassiveSignOutUrl(
authModule.Issuer, 
{login Url}, 
null); 

WSFederationAuthenticationModule.FederatedSignOut(
new Uri(signoutURL), 
new Uri(authModule.Realm)); 

Этот код действительно SignOut и удалить куки, но не перенаправляет на страницу входа в систему. Тем не менее, URL-адрес, который пользователи видят, содержит эту часть: & wreply = {loginUrl}

Как я понимаю, параметр wreply не всегда используется.

Вместо того, чтобы использовать метод FederatedSignOut() Я попробовал это один:

System.Net.WebRequest req = System.Net.WebRequest.Create(signoutURL); 
System.Net.WebResponse resp = req.GetResponse(); 
Redirect(LoginUrl); 

Но это не на самом деле выйти. Когда пользователь пытается выполнить вход в следующий раз, ему не нужно вводить учетные данные и подписываться автоматически. Я предполагаю, что не все куки-файлы удалены.

Итак, есть мой вопрос, как я могу сделать выход и принудительно перенаправить на страницу входа?

P.S. Я также удаляю файлы cookie FedAuth самостоятельно.

ответ

0

Кажется, что URL переадресации может быть только Url, что написано в IDP конфигурации:

<passiveEndpoints> 
<endpoint endpointType="WsFed" location="{this url}" binding="Post" /> 
</passiveEndpoints> 

Если wreply значение параметра любой другой URL, он не будет работать.

0

«Если wreply параметр был указан в куки ACSSignOut, то JavaScript перенаправить на адрес, указанный значением wreply для завершить знак отказа. В противном случае, JavaScript перенаправляет к Обратный URL из полагающейся стороне, как указано в ACS Management Portal ».

Source

+0

Странно, у меня нет этого печенья. Можно ли назвать ABCSTSSignOut? Кроме того, знаете ли вы формат для этого файла cookie? – Vita1ij

1

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

При попытке войти в приложение, использующее WS-Federation, вы фактически перенаправлены на провайдер удостоверений (Idp), и вы входите в этот Idp. После входа в Idp вы будете перенаправлены на ваш сайт с помощью токена безопасности, и вы также войдете на свой сайт.

На данном этапе вы вошли в двух приложений в силу:

  1. МВУ,
  2. Ваш веб-сайт

Что вы пытаетесь достичь?

  1. Выход из вашего сайта только
  2. Федеративные Выход (т.е.Выйти Idp и вашего сайта и любых других полагающихся partys)

Если мы на случай 1, то это просто. Удалите свои файлы cookie, и вы будете в порядке, но вы все равно будете зарегистрированы в Idp, и поэтому, когда пользователь перейдет на ваш сайт и перенаправится на Idp, они, скорее всего, будут перенаправлены обратно на ваш сайт с помощью токена безопасности, без запроса учетные данные, а затем снова войдут в ваш сайт, что кажется немного бессмысленным.

Учитывая это, я думаю, что вы после сценария 2. Ну, в этом случае функциональность, которую вы хотите, на самом деле зависит от того, какое программное обеспечение вы используете для своего Idp, о чем вы пренебрегли упоминанием в вопросе.

К сожалению, я не верю, что существует общий способ сделать то, что вы хотите, со всеми Идп, и даже больше Idp не будет поддерживать его напрямую.

Я думаю, что лучше всего задать вопрос о том, как работает Idp, и как заставить это работать. Кроме того, некоторые очень хорошие вещи для включения в вопрос, возможно, будут URL вашего сайта и Idp (не для целей «проверки их», а потому, что другие косвенные решения могут быть возможны, если они попадают под одно и то же имя домена). Также было бы полезно узнать о вашей инфраструктуре вашего Idp и сайта, так как снова конкретные настройки могут дать косвенные решения.