public override async Task ReceiveAsync(AuthenticationTokenReceiveContext context) { if (_options.EnableValidationResultCache) { var cachedClaims = await _options.ValidationResultCache.GetAsync(context.Token); if (cachedClaims != null) { SetAuthenticationTicket(context, cachedClaims); return; } } TokenIntrospectionResponse response; try { response = await _client.Introspect(context.Token); //response = await _client.SendAsync(new TokenIntrospectionRequest { Token = context.Token }); if (response.IsError) { _logger.WriteError("Error returned from introspection endpoint: " + response.Error); return; } if (!response.IsActive) { _logger.WriteVerbose("Inactive token: " + context.Token); return; } } catch (Exception ex) { _logger.WriteError("Exception while contacting introspection endpoint: " + ex.ToString()); return; } var claims = new List <Claim>(); foreach (var claim in response.Claims) { if (!string.Equals(claim.Type, "active", StringComparison.Ordinal)) { claims.Add(new Claim(claim.Type, claim.Value)); } //if (!string.Equals(claim.Item1, "active", StringComparison.Ordinal)) //{ // claims.Add(new Claim(claim, claim.Item2)); //} } if (_options.EnableValidationResultCache) { await _options.ValidationResultCache.AddAsync(context.Token, claims); } SetAuthenticationTicket(context, claims); }