Cómo validar el token SAML de ADFS

Actualmente estoy generando tokens SAML de 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();
                }
            }
        }

Ahora digamos que construyo una aplicación web que usa estos tokens para la autenticación. Por lo que sé, el flujo de trabajo debería ser así:

Generar tokenel cliente obtiene el token generado (después de un inicio de sesión válido)token de caché de clienteel cliente usa el token para el siguiente inicio de sesiónLa aplicación web valida el token, no tiene que llamar a ADFS

¿Cómo puedo validar que el token que presenta el cliente es válido? ¿Necesito el certificado del servidor ADFS para descifrar el token?

Respuestas a la pregunta(2)

Su respuesta a la pregunta