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?

È stato utile?

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>&nbsp;<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!)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top