Выход в случае пользовательских STS
Вопрос
Я использую пользовательские STS для SP. Сайт - это токен SAML, включенный с помощью SSO Imbelmentation. Выход не работает должным образом. Как я реализую пользовательские подписи. Что мне нужно очистить сеанс SP или Clear Cookies?
Решение
Я только что решил эту точную задачу этим утром. Вам понадобится ваши пользовательские STS, чтобы отследить сайты, которые вошли в систему, и в обработчике WSIGNOUT1.0 вам нужно будет пройти список и подписать их.
Полное описание этого метода, класс помощника для отслеживания RPS вошли в систему, а код для добавления к вашему обработчику WSIGRET все здесь:
http:// netpl.blogspot.co.uk/2010/12/wif-ws-federater-and-single-sign-out.html
Я сделал одну модификацию в класс помощника, хотя я добавил метод очистки для удаления файла cookie, который отслеживает отслеживание RP, как только вы подписали:
public static void CleanUp()
{
HttpCookie siteCookie = HttpContext.Current.Request.Cookies[SITECOOKIENAME];
if (siteCookie != null)
HttpContext.Current.Response.Cookies[SITECOOKIENAME].Expires = DateTime.Now.AddDays(-1);
}
.
А потом, в конце, если ваш подпись Handler, просто позвони ее. Вот мой блок обработчика подписания:
else if ( action == WSFederationConstants.Actions.SignOut )
{
// Process signout request.
SignOutRequestMessage requestMessage = (SignOutRequestMessage)WSFederationMessage.CreateFromUri( Request.Url );
FederatedPassiveSecurityTokenServiceOperations.ProcessSignOutRequest( requestMessage, User, requestMessage.Reply, Response );
string[] signedInUrls = SingleSignOnManager.SignOut();
lblSignoutText.Visible = true;
foreach (string url in signedInUrls)
{
SignOutLinks.Controls.Add(
new LiteralControl(string.Format(
"<p><a href='{0}'>{0}</a> <img src='{0}?wa=wsignoutcleanup1.0' " +
"title='Signout request: {0}?wa=wsignoutcleanup1.0'/></p>", url)));
}
SingleSignOnManager.CleanUp();
}
.
работает как шарм. Не забудьте создать ASP: этикетка под названием lblsignouttext и div под названием fightoutlinks по умолчанию .aspx
Единственное, что вам придется выяснить сами, заключается в том, что каждая ссылка на выхода из системы SharePoint должна быть скрыта, и вам придется создать собственную ссылку для подписания, которые указывают на:
http://mycustomsts/Default.aspx?wa=wsignout1.0
(я на самом деле был гугл для умного способа сделать это, когда я наткнулся на этот вопрос. Надеюсь, мой ответ поможет!)