Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
        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));
            }
        }