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; public HttpClientService(IOptions authSettings) { _authSettings = authSettings.Value; } public async Task IsTokenValid(string providerToken) { var httpClient = new HttpClient(); var requestUri = new Uri(string.Format(GoogleApiTokenInfoUrl, providerToken)); HttpResponseMessage httpResponseMessage; try { httpResponseMessage = httpClient.GetAsync(requestUri).Result; } catch { return false; } if (httpResponseMessage.StatusCode != HttpStatusCode.OK) { return false; } var response = httpResponseMessage.Content.ReadAsStringAsync().Result; var googleApiTokenInfo = JsonConvert.DeserializeObject(response); //if (!SupportedClientsIds.Contains(googleApiTokenInfo.aud)) if (googleApiTokenInfo.aud != _authSettings.GoogleClientId) { return false; } return true; } } }