public function validate($token)
 {
     $data = $this->parseToken($token);
     // validate digest and thumbprint
     $assertion = new SAML2_Assertion($data['Assertion']);
     $certificates = $assertion->getCertificates();
     $this->validateCertificateThumbprint($certificates[0]);
     // validate issuer
     if ($this->validateIssuer) {
         $this->validateIssuer($assertion->getIssuer());
     }
     // validate audiences
     if ($this->validateAudiences) {
         $this->validateAudiences($assertion->getValidAudiences(), $assertion->getNotBefore(), $assertion->getNotOnOrAfter());
     }
     return $this->getClaims($data);
 }