Last active
September 18, 2019 14:42
-
-
Save sedkis/4855bca97e77c76ad7435c66b2e5db1b to your computer and use it in GitHub Desktop.
Create Key Using Gateway
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var preTransformContentType = new TykJS.TykMiddleware.NewMiddleware({}); | |
preTransformContentType.NewProcessRequest(function(request, session, config) { | |
log("Running sample PRE PROCESSOR preTransformContentType middleware"); | |
var thisSession = JSON.parse(TykGetKeyData(request.Headers["Authorization"], config.APIID)) | |
if (thisSession.status == "error" || thisSession.expires >= 1 && thisSession.expires < Math.round((new Date()).getTime() / 1000)) { | |
log("Key expired, redirecting to login") | |
request.ReturnOverrides.ResponseCode = 301 | |
request.ReturnOverrides.ResponseHeaders = { | |
"Location": "http://anotherurl.com/" | |
} | |
} | |
return preTransformContentType.ReturnData(request, session.meta_data); | |
}); | |
log("Sample PRE middleware initialised"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"api_model": {}, | |
"api_definition": { | |
"api_id": "6d633c8fa9ba46027feb758d45f69daf", | |
"jwt_issued_at_validation_skew": 0, | |
"upstream_certificates": {}, | |
"use_keyless": false, | |
"enable_coprocess_auth": false, | |
"base_identity_provided_by": "auth_token", | |
"custom_middleware": { | |
"pre": [ | |
{ | |
"name": "preTransformContentType", | |
"path": "middleware/preTransformContentType.js", | |
"require_session": false | |
} | |
], | |
"post": [], | |
"post_key_auth": [], | |
"auth_check": { | |
"name": "", | |
"path": "", | |
"require_session": false | |
}, | |
"response": [], | |
"driver": "", | |
"id_extractor": { | |
"extract_from": "", | |
"extract_with": "", | |
"extractor_config": {} | |
} | |
}, | |
"disable_quota": false, | |
"custom_middleware_bundle": "", | |
"cache_options": { | |
"cache_timeout": 60, | |
"enable_cache": true, | |
"cache_all_safe_requests": false, | |
"cache_response_codes": [], | |
"enable_upstream_cache_control": false, | |
"cache_control_ttl_header": "" | |
}, | |
"enable_ip_blacklisting": false, | |
"tag_headers": [], | |
"pinned_public_keys": {}, | |
"expire_analytics_after": 0, | |
"domain": "", | |
"openid_options": { | |
"providers": [], | |
"segregate_by_client": false | |
}, | |
"jwt_policy_field_name": "", | |
"jwt_default_policies": [], | |
"active": true, | |
"jwt_expires_at_validation_skew": 0, | |
"config_data": {}, | |
"notifications": { | |
"shared_secret": "", | |
"oauth_on_keychange_url": "" | |
}, | |
"jwt_client_base_field": "", | |
"auth": { | |
"use_param": false, | |
"param_name": "", | |
"use_cookie": false, | |
"cookie_name": "", | |
"auth_header_name": "Authorization", | |
"use_certificate": false, | |
"validate_signature": false, | |
"signature": { | |
"algorithm": "", | |
"header": "", | |
"secret": "", | |
"allowed_clock_skew": 0, | |
"error_code": 0, | |
"error_message": "" | |
} | |
}, | |
"check_host_against_uptime_tests": false, | |
"auth_provider": { | |
"name": "", | |
"storage_engine": "", | |
"meta": {} | |
}, | |
"blacklisted_ips": [], | |
"hmac_allowed_clock_skew": -1, | |
"dont_set_quota_on_create": false, | |
"uptime_tests": { | |
"check_list": [], | |
"config": { | |
"expire_utime_after": 0, | |
"service_discovery": { | |
"use_discovery_service": false, | |
"query_endpoint": "", | |
"use_nested_query": false, | |
"parent_data_path": "", | |
"data_path": "", | |
"cache_timeout": 60 | |
}, | |
"recheck_wait": 0 | |
} | |
}, | |
"enable_jwt": false, | |
"do_not_track": false, | |
"name": "pre_middleware", | |
"slug": "pre_middleware", | |
"oauth_meta": { | |
"allowed_access_types": [], | |
"allowed_authorize_types": [], | |
"auth_login_redirect": "" | |
}, | |
"CORS": { | |
"enable": false, | |
"max_age": 24, | |
"allow_credentials": false, | |
"exposed_headers": [], | |
"allowed_headers": [], | |
"options_passthrough": false, | |
"debug": false, | |
"allowed_origins": [], | |
"allowed_methods": [] | |
}, | |
"event_handlers": { | |
"events": {} | |
}, | |
"proxy": { | |
"target_url": "http://httpbin.org/", | |
"service_discovery": { | |
"endpoint_returns_list": false, | |
"cache_timeout": 0, | |
"parent_data_path": "", | |
"query_endpoint": "", | |
"use_discovery_service": false, | |
"_sd_show_port_path": false, | |
"target_path": "", | |
"use_target_list": false, | |
"use_nested_query": false, | |
"data_path": "", | |
"port_data_path": "" | |
}, | |
"check_host_against_uptime_tests": false, | |
"transport": { | |
"ssl_insecure_skip_verify": false, | |
"ssl_ciphers": [], | |
"ssl_min_version": 0, | |
"proxy_url": "" | |
}, | |
"target_list": [], | |
"preserve_host_header": false, | |
"strip_listen_path": true, | |
"enable_load_balancing": false, | |
"listen_path": "/pre_middleware/", | |
"disable_strip_slash": false | |
}, | |
"client_certificates": [], | |
"use_basic_auth": false, | |
"version_data": { | |
"not_versioned": true, | |
"default_version": "", | |
"versions": { | |
"Default": { | |
"name": "Default", | |
"expires": "", | |
"paths": { | |
"ignored": [], | |
"white_list": [], | |
"black_list": [] | |
}, | |
"use_extended_paths": true, | |
"extended_paths": { | |
"ignored": [], | |
"white_list": [], | |
"black_list": [], | |
"transform": [], | |
"transform_response": [], | |
"transform_jq": [], | |
"transform_jq_response": [], | |
"transform_headers": [], | |
"transform_response_headers": [], | |
"hard_timeouts": [], | |
"circuit_breakers": [], | |
"url_rewrites": [], | |
"virtual": [], | |
"size_limits": [], | |
"method_transforms": [], | |
"track_endpoints": [], | |
"do_not_track_endpoints": [], | |
"validate_json": [], | |
"internal": [] | |
}, | |
"global_headers": {}, | |
"global_headers_remove": [], | |
"global_size_limit": 0, | |
"override_target": "" | |
} | |
} | |
}, | |
"use_standard_auth": true, | |
"session_lifetime": 0, | |
"hmac_allowed_algorithms": [], | |
"disable_rate_limit": false, | |
"definition": { | |
"location": "header", | |
"key": "x-api-version", | |
"strip_path": false | |
}, | |
"use_oauth2": false, | |
"jwt_source": "", | |
"jwt_signing_method": "", | |
"jwt_not_before_validation_skew": 0, | |
"jwt_identity_base_field": "", | |
"allowed_ips": [], | |
"org_id": "5d431f8d06ac9e183bf49f9c", | |
"enable_ip_whitelisting": false, | |
"global_rate_limit": { | |
"rate": 0, | |
"per": 0 | |
}, | |
"enable_context_vars": false, | |
"tags": [], | |
"basic_auth": { | |
"disable_caching": false, | |
"cache_ttl": 0, | |
"extract_from_body": false, | |
"body_user_regexp": "", | |
"body_password_regexp": "" | |
}, | |
"session_provider": { | |
"name": "", | |
"storage_engine": "", | |
"meta": {} | |
}, | |
"strip_auth_data": false, | |
"id": "5d813dbf06ac9eaa2d901176", | |
"certificates": [], | |
"enable_signature_checking": false, | |
"use_openid": false, | |
"internal": false, | |
"jwt_skip_kid": false, | |
"enable_batch_request_support": false, | |
"response_processors": [], | |
"use_mutual_tls_auth": false | |
}, | |
"hook_references": [], | |
"is_site": false, | |
"sort_by": 0, | |
"user_group_owners": [], | |
"user_owners": [] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This is an example of a PRE middleware that will do the following:
2a) If the token is valid, continue down the chain
2b) if the token is expired or otherwise not found, the request will be terminated and a 301 redirect will be returned