public IdentityServerRecaptchaMiddlewareBase(OwinMiddleware next, IdentityServerRecaptchaOptions options)
     : base(next)
 {
     _options = options;
 }
 public IdentityServerRecaptchaMiddlewareBase(OwinMiddleware next, IdentityServerRecaptchaOptions options)
     : base(next)
 {
     _options = options;
     _logger  = NLog.LogManager.GetCurrentClassLogger();
 }
示例#3
0
 public ChallengeByIp(OwinMiddleware next, IdentityServerRecaptchaOptions options) : base(next, options)
 {
 }
 public ValidateRecaptchaChallenge(OwinMiddleware next, IdentityServerRecaptchaOptions options) : base(next, options)
 {
 }
 protected IdentityServerRecaptchaMiddlewareBase(OwinMiddleware next, IdentityServerRecaptchaOptions options)
     : base(next)
 {
     Options = options;
 }
        public async Task <RecaptchaVerificationResponse> Validate(string recaptchaResponse, IdentityServerRecaptchaOptions options)
        {
            using (var client = new HttpClient())
            {
                var recaptchaValidationUri = string.Format(
                    options.VerifyUri + "?secret={0}&response={1}",
                    options.PrivateKey,
                    recaptchaResponse);

                var httpResponse = await client.GetAsync(recaptchaValidationUri);

                if (httpResponse.IsSuccessStatusCode)
                {
                    using (var responseStream = await httpResponse.Content.ReadAsStreamAsync())
                    {
                        using (var jsonStream = new StreamReader(responseStream))
                        {
                            var json = jsonStream.ReadToEnd();
                            return(JsonConvert.DeserializeObject <RecaptchaVerificationResponse>(json));
                        }
                    }
                }

                var succeeded = httpResponse.StatusCode == HttpStatusCode.InternalServerError ||
                                httpResponse.StatusCode == HttpStatusCode.ServiceUnavailable;

                _logger.ExtendedInfo("Recaptcha Challenge Validated", new { succeeded, RecaptchaServiceStatus = httpResponse.StatusCode });

                return(new RecaptchaVerificationResponse
                {
                    Succeeded = succeeded
                });
            }
        }