using System.Net; namespace Diligent.WebAPI.Business.Services { public class HttpClientService : IHttpClientService { private const string GoogleApiTokenInfoUrl = "https://www.googleapis.com/oauth2/v3/tokeninfo?id_token={0}"; private string[] SupportedClientsIds = { "" }; private readonly AuthorizationSettings _authSettings; private readonly ILogger _logger; public HttpClientService(IOptions authSettings, ILogger logger) { _authSettings = authSettings.Value; _logger = logger; } public async Task IsTokenValid(string providerToken) { _logger.LogInformation($"Start checking is token valid: {providerToken}"); var httpClient = new HttpClient(); var requestUri = new Uri(string.Format(GoogleApiTokenInfoUrl, providerToken)); _logger.LogInformation("Initilazing http call to googleapi"); HttpResponseMessage httpResponseMessage; try { _logger.LogInformation("Calling googleapi HTTPGet method"); httpResponseMessage = httpClient.GetAsync(requestUri).Result; } catch(Exception ex) { _logger.LogInformation($"Error in call: {ex.Message}"); return false; } if (httpResponseMessage.StatusCode != HttpStatusCode.OK) { return false; } var response = httpResponseMessage.Content.ReadAsStringAsync().Result; var googleApiTokenInfo = JsonConvert.DeserializeObject(response); _logger.LogInformation($"Call pass and it received: {googleApiTokenInfo}"); //if (!SupportedClientsIds.Contains(googleApiTokenInfo.aud)) if (googleApiTokenInfo.aud != _authSettings.GoogleClientId) { return false; } return true; } } }