Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System.Net;
  2. namespace Diligent.WebAPI.Business.Services
  3. {
  4. public class HttpClientService : IHttpClientService
  5. {
  6. private const string GoogleApiTokenInfoUrl = "https://www.googleapis.com/oauth2/v3/tokeninfo?id_token={0}";
  7. private string[] SupportedClientsIds = { "" };
  8. private readonly AuthorizationSettings _authSettings;
  9. private readonly ILogger<HttpClientService> _logger;
  10. public HttpClientService(IOptions<AuthorizationSettings> authSettings, ILogger<HttpClientService> logger)
  11. {
  12. _authSettings = authSettings.Value;
  13. _logger = logger;
  14. }
  15. public async Task<bool> IsTokenValid(string providerToken)
  16. {
  17. _logger.LogInformation($"Start checking is token valid: {providerToken}");
  18. var httpClient = new HttpClient();
  19. var requestUri = new Uri(string.Format(GoogleApiTokenInfoUrl, providerToken));
  20. _logger.LogInformation("Initilazing http call to googleapi");
  21. HttpResponseMessage httpResponseMessage;
  22. try
  23. {
  24. _logger.LogInformation("Calling googleapi HTTPGet method");
  25. httpResponseMessage = httpClient.GetAsync(requestUri).Result;
  26. }
  27. catch(Exception ex)
  28. {
  29. _logger.LogInformation($"Error in call: {ex.Message}");
  30. return false;
  31. }
  32. if (httpResponseMessage.StatusCode != HttpStatusCode.OK)
  33. {
  34. return false;
  35. }
  36. var response = httpResponseMessage.Content.ReadAsStringAsync().Result;
  37. var googleApiTokenInfo = JsonConvert.DeserializeObject<GoogleApiTokenInfo>(response);
  38. _logger.LogInformation($"Call pass and it received: {googleApiTokenInfo}");
  39. //if (!SupportedClientsIds.Contains(googleApiTokenInfo.aud))
  40. if (googleApiTokenInfo.aud != _authSettings.GoogleClientId)
  41. {
  42. return false;
  43. }
  44. return true;
  45. }
  46. }
  47. }