Uploaded image for project: 'Red Hat 3scale API Management'
  1. Red Hat 3scale API Management
  2. THREESCALE-5149

Path based routing doesn't match args

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 2.9 GA
    • 2.8 GA
    • Gateway
    • Not Started
    • Not Started
    • Not Started
    • Not Started
    • Not Started
    • Not Started
    • +

      When using APICAST_PATH_ROUTING=1 with the following configuration:

      {
      	"services": [{
      			"backend_authentication_type": "service_token",
      			"buyer_plan_change_permission": "request",
      			"buyer_key_regenerate_enabled": true,
      			"default_service_plan_id": null,
      			"name": "Service 01",
      			"backend_authentication_value": "3fada0b8cceff8fd54d489e9cde622f2c568bc29495f87ab0e3e0e2c2407f7dc",
      			"txt_api": null,
      			"notification_settings": null,
      			"admin_support_email": null,
      			"logo_content_type": null,
      			"mandatory_app_key": true,
      			"system_name": "service_01",
      			"state": "incomplete",
      			"id": 1,
      			"proxiable?": true,
      			"display_provider_keys": false,
      			"default_application_plan_id": null,
      			"terms": null,
      			"end_user_registration_required": true,
      			"support_email": "admin@example.com",
      			"account_id": 1,
      			"tenant_id": 2,
      			"txt_features": null,
      			"buyers_manage_keys": true,
      			"buyers_manage_apps": true,
      			"oneline_description": null,
      			"custom_keys_enabled": true,
      			"credit_card_support_email": null,
      			"proxy": {
      				"error_headers_no_match": "text\/plain; charset=us-ascii",
      				"error_no_match": "No Mapping Rule matched",
      				"backend": {
      					"endpoint": "https:\/\/su1.3scale.net",
      					"host": "su1.3scale.net"
      				},
      				"authentication_method": "1",
      				"error_status_limits_exceeded": 429,
      				"production_domain": "localhost",
      				"error_headers_limits_exceeded": "text\/plain; charset=us-ascii",
      				"created_at": "2019-08-16T16:04:00-05:00",
      				"valid?": true,
      				"hostname_rewrite_for_sandbox": "echo-api.3scale.net",
      				"error_headers_auth_failed": "text\/plain; charset=us-ascii",
      				"error_status_auth_missing": 403,
      				"auth_user_key": "api_key",
      				"oidc_issuer_type": "keycloak",
      				"error_status_auth_failed": 403,
      				"auth_app_key": "app_key",
      				"id": 170732,
      				"sandbox_endpoint": "http:\/\/localhost:8080",
      				"staging_domain": "localhost",
      				"service_id": 1,
      				"endpoint": "https:\/\/api.esar.io:443",
      				"api_test_path": "\/uat\/sartoken\/domiciliacion\/registrardomiciliacion",
      				"api_test_success": null,
      				"service_backend_version": "1",
      				"updated_at": "2019-09-06T12:37:12-05:00",
      				"auth_app_id": "app_id",
      				"apicast_configuration_driven": true,
      				"error_limits_exceeded": "Usage limit exceeded",
      				"error_status_no_match": 404,
      				"tenant_id": 2,
      				"hostname_rewrite": "",
      				"error_auth_missing": "Authentication parameters missing",
      				"deployed_at": null,
      				"hosts": [
      					"localhost",
      					"localhost"
      				],
      				"api_backend": "https:\/\/echo-api.3scale.net:443",
      				"oauth_login_url": null,
      				"error_headers_auth_missing": "text\/plain; charset=us-ascii",
      				"credentials_location": "query",
      				"endpoint_port": 443,
      				"error_auth_failed": "Authentication failed",
      				"oidc_issuer_endpoint": null,
      				"lock_version": 11,
      				"proxy_rules": [{
      						"owner_id": 2,
      						"id": 2,
      						"delta": 1,
      						"updated_at": "2019-08-16T16:06:31-05:00",
      						"position": 1,
      						"metric_id": 1,
      						"tenant_id": 2,
      						"created_at": "2019-08-16T16:04:00-05:00",
      						"proxy_id": 170732,
      						"pattern": "\/x\/y\/z",
      						"http_method": "GET",
      						"parameters": {},
      						"redirect_url": null,
      						"last": false,
      						"owner_type": "Proxy",
      						"metric_system_name": "hits",
      						"querystring_parameters": {}
      					},
      					{
      						"owner_id": 2,
      						"id": 3,
      						"delta": 1,
      						"updated_at": "2019-08-16T16:06:31-05:00",
      						"position": 2,
      						"metric_id": 1,
      						"tenant_id": 2,
      						"created_at": "2019-08-16T16:06:31-05:00",
      						"proxy_id": 1,
      						"pattern": "\/a\/b",
      						"http_method": "POST",
      						"parameters": {},
      						"redirect_url": null,
      						"last": false,
      						"owner_type": "Proxy",
      						"metric_system_name": "hitsUAT",
      						"querystring_parameters": {}
      					}
      				],
      				"policy_chain": [{
      					"name": "apicast",
      					"configuration": {},
      					"version": "builtin"
      				}],
      				"secret_token": "Shared_secret_sent_from_proxy_to_API_backend_c1b4e7803099ac62"
      			},
      			"buyer_can_select_plan": false,
      			"description": "This is a description",
      			"deployment_option": "self_managed",
      			"kubernetes_service_link": null,
      			"logo_file_size": null,
      			"backend_version": "1",
      			"default_end_user_plan_id": null,
      			"act_as_product": false
      		},
      		{
      			"tech_support_email": null,
      			"txt_support": null,
      			"draft_name": "",
      			"backend_authentication_type": "service_token",
      			"buyer_plan_change_permission": "request",
      			"buyer_key_regenerate_enabled": true,
      			"default_service_plan_id": null,
      			"created_at": "2020-04-26T00:41:55-05:00",
      			"name": "Service 02",
      			"backend_authentication_value": "de57c2f6f5ca23a338bc215436aea97b12611feab48347dff94f05fb218b7135",
      			"txt_api": null,
      			"notification_settings": null,
      			"buyer_can_select_plan": false,
      			"logo_content_type": null,
      			"mandatory_app_key": true,
      			"system_name": "service_02",
      			"state": "incomplete",
      			"id": 3,
      			"proxiable?": true,
      			"display_provider_keys": false,
      			"default_application_plan_id": null,
      			"end_user_registration_required": 1,
      			"default_end_user_plan_id": null,
      			"support_email": "admin@example.com",
      			"account_id": 2,
      			"tenant_id": 2,
      			"txt_features": null,
      			"buyers_manage_keys": true,
      			"buyers_manage_apps": true,
      			"oneline_description": null,
      			"admin_support_email": null,
      			"deployment_option": "self_managed",
      			"proxy": {
      				"error_headers_no_match": "text\/plain; charset=us-ascii",
      				"error_no_match": "No Mapping Rule matched",
      				"backend": {
      					"endpoint": "https:\/\/su1.3scale.net",
      					"host": "su1.3scale.net"
      				},
      				"authentication_method": "1",
      				"error_status_limits_exceeded": 429,
      				"production_domain": "localhost",
      				"error_headers_limits_exceeded": "text\/plain; charset=us-ascii",
      				"created_at": "2020-04-26T00:41:55-05:00",
      				"valid?": true,
      				"service_id": 2,
      				"error_headers_auth_failed": "text\/plain; charset=us-ascii",
      				"error_status_auth_missing": 403,
      				"auth_user_key": "api_key",
      				"secret_token": "Shared_secret_sent_from_proxy_to_API_backend_af8b10a3a09d667a",
      				"oidc_issuer_type": "keycloak",
      				"error_status_auth_failed": 403,
      				"lock_version": 4,
      				"auth_app_key": "app_key",
      				"id": 2,
      				"sandbox_endpoint": "http:\/\/localhost:8080",
      				"staging_domain": "localhost",
      				"api_test_path": "\/",
      				"error_headers_auth_missing": "text\/plain; charset=us-ascii",
      				"api_test_success": null,
      				"error_status_no_match": 404,
      				"service_backend_version": "1",
      				"updated_at": "2020-05-02T19:30:51-05:00",
      				"hostname_rewrite": "",
      				"apicast_configuration_driven": true,
      				"auth_app_id": "app_id",
      				"error_limits_exceeded": "Usage limit exceeded",
      				"tenant_id": 2,
      				"endpoint": "http:\/\/localhost:8080",
      				"oauth_login_url": null,
      				"deployed_at": null,
      				"error_auth_missing": "Authentication parameters missing",
      				"api_backend": "https:\/\/echo-api.3scale.net:443",
      				"hosts": [
      					"localhost",
      					"localhost"
      				],
      				"error_auth_failed": "Authentication failed",
      				"credentials_location": "query",
      				"endpoint_port": 443,
      				"hostname_rewrite_for_sandbox": "echo-api.3scale.net",
      				"oidc_issuer_endpoint": null,
      				"policy_chain": [{
      					"name": "apicast",
      					"configuration": {},
      					"version": "builtin"
      				}],
      				"proxy_rules": [{
      					"owner_id": 2,
      					"id": 3,
      					"delta": 1,
      					"updated_at": "2020-05-02T19:30:51-05:00",
      					"position": 1,
      					"metric_id": 2,
      					"tenant_id": 2,
      					"created_at": "2020-04-26T00:41:55-05:00",
      					"proxy_id": 2,
      					"pattern": "\/foo\/bar?baz={baz}",
      					"http_method": "GET",
      					"parameters": {},
      					"redirect_url": null,
      					"last": false,
      					"owner_type": "Proxy",
      					"metric_system_name": "hits",
      					"querystring_parameters": {
      						"baz": "{baz}"
      					}
      				}],
      				"description": "descriptio",
      				"credit_card_support_email": null,
      				"kubernetes_service_link": null,
      				"terms": null,
      				"logo_file_size": null,
      				"backend_version": "1",
      				"logo_file_name": null,
      				"act_as_product": false
      			}
      		}
      	]
      }
      

      The gateway fails to match the mapping rule /foo/bar?baz=baz because here it makes use of an empty table as args and it fails with querystring_params(): check query params baz value missing 'baz'

              Unassigned Unassigned
              rhn-support-cpalmier Carlo Palmieri (Inactive)
              Jakub Smadis Jakub Smadis (Inactive)
              Carlo Palmieri Carlo Palmieri (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: