コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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));
        }