protected override async Task <PipelineState> DoInvoke(IOwinContext context, IOpenIdConnectRequest openIdConnectRequest, ILoginStatistics loginStatistics) { var recaptchaValidationService = context.Get <IRecaptchaValidationService>(); var recaptchaChallengeResponse = openIdConnectRequest.GetRecaptchaChallengeResponse(); if (!string.IsNullOrEmpty(recaptchaChallengeResponse)) { var recaptchaVerificationResponse = await recaptchaValidationService.Validate(recaptchaChallengeResponse, Options); if (recaptchaVerificationResponse.Succeeded) { context.Set <IRecaptchaContext>(new RecaptchaContext(RecaptchaState.ChallengeSucceeded, recaptchaVerificationResponse.Hostname, recaptchaVerificationResponse.Timestamp)); return(PipelineState.Continue); } context.Set <IRecaptchaContext>(new RecaptchaContext(RecaptchaState.Failed, recaptchaVerificationResponse.Hostname, recaptchaVerificationResponse.Timestamp)); return(PipelineState.Challenge); } return(PipelineState.Continue); }