Logout in caso di STS personalizzato
Domanda
Sto usando una STS personalizzata per SP.Il sito è abilitato il token SAML con l'implMENTAZIONE SSO. Il logout non funziona correttamente. Come implemendo il segno personalizzato. Devo cancellare la sessione SP oi biscotti chiari?
Soluzione
Ho appena affrontato questa attività esatta questa mattina. Avrai bisogno dei tuoi ST personalizzati per tenere traccia dei siti che hanno effettuato l'accesso e nel gestore wsignout1.0, dovrai passare attraverso l'elenco e firmarli.
Descrizione completa di questo metodo, una classe helper per tenere traccia del RPS accessibile e il codice per aggiungere al tuo gestore wsignout sono tutti qui:
http:// netpl.blogspot.co.uk/2010/12/wif-ws-federation-and-single-sign-out.html
Ho fatto una modifica alla classe Helper però, ho aggiunto un metodo di pulizia per rimuovere il cookie che tiene traccia del RPS una volta firmato:
public static void CleanUp()
{
HttpCookie siteCookie = HttpContext.Current.Request.Cookies[SITECOOKIENAME];
if (siteCookie != null)
HttpContext.Current.Response.Cookies[SITECOOKIENAME].Expires = DateTime.Now.AddDays(-1);
}
.
E poi, alla fine se il tuo gestore di discorso, chiamalo. Ecco il mio blocco del gestore di Signout:
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();
}
.
funziona come un fascino. Ricordarsi di creare un ASP: etichetta chiamata LBLSIGNOUTTEXT e un div chiamato SignorLinks sul tuo predefinito.aspx
L'unica cosa che dovrai capire te stesso, è che il link di disconnessione del sito di ciascun sito di SharePoint deve essere nascosto e dovrai creare il tuo link di discorso che punta a:
http://mycustomsts/Default.aspx?wa=wsignout1.0
(Stavo davvero googling per un modo intelligente di fare questo quando ho trovato questa domanda. Spero che la mia risposta ti aiuti!)