using System; using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; namespace WebAPI.Data { public class OIDCService { private HttpClient _httpClient { get; set; } private ILogger _logger { get; set; } public OIDCService(ILogger logger) { _logger = logger; _httpClient = new HttpClient(); } /// /// Simple check of an OIDC access token by attempting to hit the userinfo endpoint. /// /// access token to check /// success public async Task ValidateAccessToken(string accessToken) { Uri requestUri = new Uri($"{AppSettings.OIDCUserInfoEndpoint}"); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, requestUri); request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); HttpResponseMessage response = await _httpClient.SendAsync(request); if (!response.IsSuccessStatusCode) { return false; } return true; } } }