Como validar o token SAML do ADFS

Atualmente estou gerando tokens SAML do ADFS como este:

 WSTrustChannelFactory factory = null;
        try
        {
            // use a UserName Trust Binding for username authentication
            factory = new WSTrustChannelFactory(
                new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential),
                 new EndpointAddress("https://adfs.company.com/adfs/services/trust/13/usernamemixed"));

            factory.TrustVersion = TrustVersion.WSTrust13;

            factory.Credentials.UserName.UserName = "user";
            factory.Credentials.UserName.Password = "pw";


            var rst = new RequestSecurityToken
            {
                RequestType = RequestTypes.Issue,
                AppliesTo = new EndpointReference(relyingPartyId),
                KeyType = KeyTypes.Bearer
            };
            IWSTrustChannelContract channel = factory.CreateChannel();
              GenericXmlSecurityToken genericToken = channel.Issue(rst) 
               as     GenericXmlSecurityToken;
         }
        finally
        {
            if (factory != null)
            {
                try
                {
                    factory.Close();
                }
                catch (CommunicationObjectFaultedException)
                {
                    factory.Abort();
                }
            }
        }

Agora vamos dizer que eu construo uma aplicação web que usa esses tokens para autenticação. Tanto quanto eu sei o fluxo de trabalho deve ser assim:

Gerar tokeno cliente obtém o token gerado (após login válido)Token de caches do clientecliente usa token para o próximo loginaplicativo da web valida token, não precisa chamar o ADFS

Como posso validar que o token apresentado pelo cliente é válido? Preciso do certificado do servidor ADFS para descriptografar o token?

questionAnswers(2)

yourAnswerToTheQuestion