Pregunta

Estoy usando un STS personalizado para SP.El sitio es un token SAML habilitado con la implementación de SSO. El cierre de sesión no funciona correctamente. ¿Cómo implito implementar la señalización personalizada? ¿Necesito borrar la sesión SP o las cookies claras?

¿Fue útil?

Solución

Acabo de abordar esta tarea exacta esta mañana. Necesitará su STS personalizado para realizar un seguimiento de los sitios que se registran, y en el manejador WSIGNOUT1.0, deberá pasar por la lista y firmarlos.

Descripción completa de este método, una clase auxiliar para realizar un seguimiento del RPS iniciado sesión, y el código para agregar a su controlador WSIGNOUT está aquí:

http:// netpl.blogspot.co.uk/2010/12/wif-ws-federation-and-single-sign-out.html Sin embargo,

Hice una modificación a la clase Helper, aunque agregué un método de limpieza para eliminar la cookie que realiza un seguimiento del RPS una vez que esté firmado:

public static void CleanUp()
{
    HttpCookie siteCookie = HttpContext.Current.Request.Cookies[SITECOOKIENAME];

    if (siteCookie != null)
        HttpContext.Current.Response.Cookies[SITECOOKIENAME].Expires = DateTime.Now.AddDays(-1);
}

y luego, al final, si su manejador de SlougSout, solo llámelo. Aquí está mi bloque de manipulador de SloutOut:

        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();
        }

funciona como un encanto. Recuerde crear un ASP: Label llamado LBLSIGNOUTTEXT y un DIV llamado SumautLinks en su predeterminado.aspx

Lo único que tendrá que averiguar a sí mismo, es que el enlace de cierre de sesión de cada sitio de SharePoint deberá estar oculto, y tendrá que crear su propio enlace de señalización que apunta a:

http://mycustomsts/Default.aspx?wa=wsignout1.0

(en realidad estaba pasando por una manera inteligente de hacer esto cuando encontré esta pregunta. Espero que mi respuesta ayude!)

Licenciado bajo: CC-BY-SA con atribución
scroll top