public OAuth2AccessToken resolve(String tokenString) { OAuth2AccessTokenEnvelope envelope = JasonUtils.UnmarshalAccessTokenEnvelope(tokenString); if (envelope == null) { throw new System.ApplicationException("Cannot create OAuth2 Envelope from token"); } String accessToken = envelope.Token; if (!tokenSigner.IsValid(accessToken, envelope.SignatureValue)) { // Invalid signature, throw exception. throw new System.ApplicationException("Invalid OAuth2 Token signature"); } accessToken = tokenEncrypter.Decrypt(accessToken); if (envelope.Deflated) { accessToken = JasonUtils.inflate(accessToken, true); } OAuth2AccessToken at = JasonUtils.UnmarshalAccessToken(accessToken); // Check token expiration return(at); }