protected async override Task <AuthenticateResult> HandleAuthenticateAsync()
        {
            var embeddedAppToken = Context.GetRouteValue("embeddedAppToken") as string;

            if (embeddedAppToken?.Equals("null") == true)
            {
                var developmentGrantToken = _configuration.GetValue <string>("DevelopmentRevisoAgreementGrantToken", string.Empty);
                if (String.IsNullOrEmpty(developmentGrantToken))
                {
                    return(AuthenticateResult.Fail(new UnauthorizedAccessException()));
                }
                else
                {
                    return(AuthenticateResult.Success(new AuthenticationTicket(new RevisoGrantTokenPrincipal("null"), REVISO_AUTHENTICATION_SCHEME)));
                }
            }
            else
            {
                var restClient = new HttpClient();
                restClient.DefaultRequestHeaders.Accept.Clear();
                restClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                restClient.DefaultRequestHeaders.Add("X-AppSecretToken", _configuration["RevisoAppSecretToken"]);
                var responseMessage = await restClient.GetAsync($"{_configuration["RevisoRestUrl"]}/apps-auth/grant-token/{embeddedAppToken}");

                if (responseMessage.StatusCode == HttpStatusCode.Unauthorized)
                {
                    return(AuthenticateResult.Fail(new UnauthorizedAccessException()));
                }
                else if (responseMessage.StatusCode == HttpStatusCode.OK)
                {
                    var token = _grantTokenProtection.Protect(await responseMessage.Content.ReadAsStringAsync());
                    return(AuthenticateResult.Success(new AuthenticationTicket(new RevisoGrantTokenPrincipal(token), REVISO_AUTHENTICATION_SCHEME)));
                }
                else
                {
                    return(AuthenticateResult.Fail(new InvalidOperationException(responseMessage.ToString())));
                }
            }
        }