Pergunta

Eu estou usando um STS personalizado para SP.O site é de token SAML habilitado para SSO implmentation.O logout não está a funcionar correctamente.Como faço para implementar personalizado Signout .eu preciso limpar o SP sessão ou apagar cookies?

Foi útil?

Solução

Eu apenas abordado neste exato tarefa esta manhã.Você vai precisar de um STS Personalizado para controlar os sites que estão conectados, e na wsignout1.0 manipulador, você vai precisar para percorrer a lista e assiná-las fora.

Descrição completa deste método, uma classe auxiliar para manter o controle do RPs conectado, e o código para adicionar ao seu wsignout manipulador estão todos aqui:

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

Eu fiz uma modificação para a classe auxiliar, porém, eu adicionei um método de Limpeza para remover o cookie que mantém o controle do RPs, uma vez que você estiver conectado:

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 então, no final, se o seu signout manipulador, basta chamá-lo.Aqui está o meu signout manipulador de bloco:

        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 um encanto.Lembre-se de criar um asp:Label chamado lblSignoutText e uma div chamada SignOutLinks no seu Padrão.aspx

A única coisa que você vai ter que descobrir sozinho, é que cada site do SharePoint link logout irá precisam ser escondidos, e você terá que criar a sua própria signout link que aponta para:

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

(Na verdade, eu estava Pesquisando para uma maneira inteligente de fazer isso quando me deparei com esta questão.Espero que minha resposta ajude!)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top