public async Task <CapabilitiesResponse> GetAsync(CapabilitiesRequestArgs args, CancellationToken token) { try { var requestArgs = new TokenSendRequestArgs(args.RequestUri, accessToken: args.AccessToken); var response = await _client.SendRequestAsync(requestArgs, token); var assertionModel = _jwtTokenParser.Parse(response); var validationArgs = CreateValidationArgs(args, assertionModel); if (!await _tokenResponseValidator.IsValidAsync(validationArgs, args.SchemeOwnerAccessToken, token)) { throw new UnsuccessfulResponseException($"Token which was retrieved from {args.RequestUri} is corrupted."); } return(TokenConvert.DeserializeClaim <CapabilitiesResponse>( assertionModel.JwtSecurityToken, "capabilities_info")); } catch (UnsuccessfulResponseException) { throw; } catch (Exception e) { throw new UnsuccessfulResponseException("Capabilities request was unsuccessful.", e); } }
public async Task <IReadOnlyCollection <CertificateAuthority> > GetAsync(string accessToken, CancellationToken token) { try { var requestArgs = new TokenSendRequestArgs(_requestUri, accessToken: accessToken); var response = await _client.SendRequestAsync(requestArgs, token); var clientAssertion = _jwtTokenParser.Parse(response); if (!_tokenResponseValidator.IsValid(clientAssertion)) { throw new UnsuccessfulResponseException("Token which was retrieved from SO is corrupted."); } return(TokenConvert.DeserializeClaim <List <CertificateAuthority> >( clientAssertion.JwtSecurityToken, "trusted_list")); } catch (UnsuccessfulResponseException) { throw; } catch (Exception e) { throw new UnsuccessfulResponseException("Trusted list request was unsuccessful.", e); } }
public async Task <string> SendRequestAsync(TokenSendRequestArgs args, CancellationToken token) { var httpClient = CreateHttpClient(args.AccessToken); var fullUri = AppendParametersIfNeeded(args.RequestUri, args.Parameters); var response = await httpClient.GetAsync(fullUri, token); response.EnsureSuccessStatusCode(); return(await ExtractToken(response.Content, token)); }