public async Task <Result <SbApiAuthToken> > AuthenticateAsync(GoogleAuthToken googleAuthToken) { var payload = await ValidateAsync(googleAuthToken); if (payload.IsSuccess) { return(await AuthenticateWithToken(new AuthTokenPayload(payload.Value))); } else { return(Result.Failure <SbApiAuthToken>(payload.Error)); } }
private async Task <Result <GoogleJsonWebSignature.Payload> > ValidateAsync(GoogleAuthToken googleAuthToken) { var authGoogleOptions = _configuration.GetOptions <GoogleAuthOptions>(GoogleAuthOptions.SectionName); try { var payload = await GoogleJsonWebSignature .ValidateAsync(googleAuthToken.IdToken, new GoogleJsonWebSignature.ValidationSettings() { Audience = new[] { authGoogleOptions.ClientId }, }); return(Result.Ok(payload)); } catch (Exception e) { _logger.LogWarning(e, "Google id_token validation failed"); return(Result.Failure <GoogleJsonWebSignature.Payload>(e.Message)); } }