public StateTokenParser( IClient client, ClientApiKeyConfiguration apiKeyConfiguration, string token, ILogger logger) { DecodeToken(client, apiKeyConfiguration, token, logger); }
public ClientConfiguration( ClientApiKeyConfiguration apiKey = null, ClientCacheManagerConfiguration cacheManager = null, string baseUrl = null, int? connectionTimeout = null, ClientAuthenticationScheme? authenticationScheme = null, ClientProxyConfiguration proxy = null) { this.ApiKey = new ClientApiKeyConfiguration(apiKey) ?? Default.Configuration.Client.ApiKey; this.CacheManager = new ClientCacheManagerConfiguration(cacheManager) ?? Default.Configuration.Client.CacheManager; this.BaseUrl = baseUrl ?? Default.Configuration.Client.BaseUrl; this.ConnectionTimeout = connectionTimeout ?? Default.Configuration.Client.ConnectionTimeout; this.AuthenticationScheme = authenticationScheme ?? Default.Configuration.Client.AuthenticationScheme; this.Proxy = new ClientProxyConfiguration(proxy) ?? Default.Configuration.Client.Proxy; }
private void DecodeToken( IClient client, ClientApiKeyConfiguration apiKeyConfiguration, string token, ILogger logger) { if (string.IsNullOrEmpty(token)) { Valid = false; return; } try { // TODO: replace with direct JWT library access var parsedJwt = client.NewJwtParser() .SetSigningKey(apiKeyConfiguration.Secret, Encoding.UTF8) .Parse(token); if (parsedJwt.Body.ContainsClaim(StateTokenBuilder.PathClaimName)) { Path = parsedJwt.Body.GetClaim(StateTokenBuilder.PathClaimName).ToString(); } if (parsedJwt.Body.ContainsClaim(StateTokenBuilder.StateClaimName)) { State = parsedJwt.Body.GetClaim(StateTokenBuilder.StateClaimName).ToString(); } Valid = true; } catch (InvalidJwtException ije) { logger.Warn($"Redirect token failed validation ({ije.Message}): {token}", source: nameof(StateTokenParser)); Valid = false; } }
public StateTokenBuilder(IClient client, ClientApiKeyConfiguration apiKeyConfiguration) { _client = client; _apiKeyConfiguration = apiKeyConfiguration; }
public ClientApiKeyConfiguration(ClientApiKeyConfiguration existing) : this(file: existing?.File, id: existing?.Id, secret: existing?.Secret) { }