No update Access right for key using jwt

Branch/Environment/Version

  • Branch/Version: v4.0.0
  • Environment: Hybrid

Describe the bug
no update Access right for key using jwt

Reproduction steps
Steps to reproduce the behaviour:

  1. Add api test1: enable jwt, jwt_default_policies is “defautl”
  2. create policy default with no “access_rights” to using all API
  3. create policy pol1 with “access_rights” to access test1

Actual behaviour
Create jwt token with pol1, using it → success
Create jwt token no policy and same userId → “error”: “Access to this API has been disallowed”

Expected behaviour
I think it can access all API which default policy

Screenshots/Video
If applicable, add screenshots or video to help explain your problem.

Logs (debug mode or log file):
{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“level”:“debug”,“msg”:“Started”,“mw”:“VersionCheck”,“org_id”:“default”,"orig

in":“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”,“ts”:1683170735700554637}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“code”:200,“level”:“debug”,“msg”:“Finished”,“mw”:“VersionCheck”,“ns”:724600,

“org_id”:“default”,“origin”:“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“level”:“debug”,“msg”:“Started”,“mw”:“RateCheckMW”,“org_id”:“default”,"origi

n":“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”,“ts”:1683170735702046237}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“code”:200,“level”:“debug”,“msg”:“Finished”,“mw”:“RateCheckMW”,“ns”:1303500,

“org_id”:“default”,“origin”:“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“level”:“debug”,“msg”:“Started”,“mw”:“JWTMiddleware”,“org_id”:“default”,"ori

gin":“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”,“ts”:1683170735704304037}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“level”:“debug”,“msg”:“JWT authority is centralised”,“mw”:“JWTMiddleware”,"o

rg_id":“default”,“origin”:“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“level”:“debug”,“msg”:“Found User Id in Base Field”,“mw”:“JWTMiddleware”,"or

g_id":“default”,“origin”:“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”,“userId”:“hlinh99”}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“level”:“debug”,“msg”:"JWT Temporary session ID is: default1ad6cc9574d7ae7c5

411d9a151bc0c03",“mw”:“JWTMiddleware”,“org_id”:“default”,“origin”:“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“level”:“debug”,“msg”:“Querying local cache”,“mw”:“JWTMiddleware”,“org_id”:"

default",“origin”:“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“level”:“debug”,“msg”:“Querying keystore”,“mw”:“JWTMiddleware”,“org_id”:"def

ault",“origin”:“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“level”:“debug”,“msg”:“Got key”,“mw”:“JWTMiddleware”,“org_id”:“default”,"ori

gin":“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“level”:“debug”,“msg”:"Could not identify a policy to apply to this token fr

om field: pid",“mw”:“JWTMiddleware”,“org_id”:“default”,“origin”:“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“level”:“debug”,“msg”:“Key found”,“mw”:“JWTMiddleware”,“org_id”:“default”,"o

rigin":“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“code”:200,“level”:“debug”,“msg”:“Finished”,“mw”:“JWTMiddleware”,“ns”:575739

99,“org_id”:“default”,“origin”:“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“key”:“****0c03”,“level”:“debug”,“msg”:“Started”,“mw”:“KeyExpired”,“org_id”:

“default”,“origin”:“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”,“ts”:1683170735765694435}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“code”:200,“key”:“****0c03”,“level”:“debug”,“msg”:“Finished”,“mw”:"KeyExpire

d",“ns”:1572400,“org_id”:“default”,“origin”:“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“key”:“****0c03”,“level”:“debug”,“msg”:“Started”,“mw”:“AccessRightsCheck”,"o

rg_id":“default”,“origin”:“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”,“ts”:1683170735772628335}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“key”:“****0c03”,“level”:“info”,“msg”:“Attempted access to unauthorised API”

,“mw”:“AccessRightsCheck”,“org_id”:“default”,“origin”:“172.20.16.1”,“path”:“/test/”,“time”:“2023-05-04T10:25:35+07:00”}

{“level”:“debug”,“msg”:“Attempting to write analytics records…”,“time”:“2023-05-04T10:25:35+07:00”}

{“level”:“info”,“msg”:“Purged analytics records…”,“time”:“2023-05-04T10:25:35+07:00”}

{“api_id”:“63297b48e97c40734f9fdb92”,“api_name”:“test6”,“code”:403,“error”:“Access to this API has been disallowed”,“key”:“****0c03”

,“level”:“debug”,“msg”:“Finished”,“mw”:“AccessRightsCheck”,“ns”:8150800,“org_id”:“default”,“origin”:“172.20.16.1”,“path”:“/test/”,“time”:"2023-05-04T10:25:3

5+07:00"}

Configuration (tyk config file):
{
“hostname”: “”,
“listen_address”: “”,
“listen_port”: 8080,
“control_api_hostname”: “”,
“control_api_port”: 0,
“secret”: “352d20ee67be67f6340b4c0605b044b7”,
“node_secret”: “”,
“pid_file_location”: “”,
“allow_insecure_configs”: false,
“public_key_path”: “”,
“allow_remote_config”: false,
“security”: {
“private_certificate_encoding_secret”: “”,
“control_api_use_mutual_tls”: false,
“pinned_public_keys”: null,
“certificates”: {
“apis”: null,
“upstream”: null,
“control_api”: null,
“dashboard_api”: null,
“mdcb_api”: null
}
},
“http_server_options”: {
“read_timeout”: 0,
“write_timeout”: 0,
“use_ssl”: false,
“use_ssl_le”: false,
“enable_http2”: true,
“ssl_insecure_skip_verify”: false,
“enable_websockets”: true,
“certificates”: [
{
“cert_file”: “/opt/idg-api-gateway/ssl-file/cert.cert”,
“key_file”: “/opt/idg-api-gateway/ssl-file/cert.key”
}
],
“ssl_certificates”: null,
“server_name”: “”,
“min_version”: 0,
“max_version”: 0,
“flush_interval”: 0,
“skip_url_cleaning”: false,
“skip_target_path_escaping”: false,
“ssl_ciphers”: null
},
“version_header”: “”,
“suppress_redis_signal_reload”: true,
“hash_keys”: false,
“hash_key_function”: “”,
“hash_key_function_fallback”: null,
“enable_hashed_keys_listing”: false,
“min_token_length”: 0,
“template_path”: “templates”,
“policies”: {
“policy_source”: “file”,
“policy_connection_string”: “”,
“policy_record_name”: “./policies/default.json”,
“allow_explicit_policy_id”: false
},
“ports_whitelist”: null,
“disable_ports_whitelist”: false,
“app_path”: “apps/”,
“use_db_app_configs”: false,
“db_app_conf_options”: {
“connection_string”: “”,
“node_is_segmented”: false,
“tags”: null
},
“storage”: {
“type”: “redis”,
“addrs”: [
...:*”

    ],
    "username": "*",
    "password": "******",
    "database": 0,
    "optimisation_max_idle": 100,
    "optimisation_max_active": 0,
    "timeout": 0,
    "enable_cluster": true,
    "use_ssl": false,
    "ssl_insecure_skip_verify": false
},
"disable_dashboard_zeroconf": false,
"slave_options": {
    "use_rpc": false,
    "use_ssl": false,
    "ssl_insecure_skip_verify": false,
    "connection_string": "",
    "rpc_key": "",
    "api_key": "",
    "enable_rpc_cache": false,
    "bind_to_slugs": false,
    "disable_keyspace_sync": false,
    "group_id": "",
    "call_timeout": 0,
    "ping_timeout": 0,
    "rpc_pool_size": 0,
    "key_space_sync_interval": 0
},
"management_node": false,
"auth_override": {
    "force_auth_provider": false,
    "auth_provider": {
        "name": "",
        "storage_engine": "",
        "meta": null
    },
    "force_session_provider": false,
    "session_provider": {
        "name": "",
        "storage_engine": "",
        "meta": null
    }
},
"enable_redis_rolling_limiter": true,
"enable_sentinel_rate_limiter": false,
"enable_non_transactional_rate_limiter": false,
"drl_notification_frequency": 0,
"drl_threshold": 0,
"drl_enable_sentinel_rate_limiter": false,
"enforce_org_data_age": false,
"enforce_org_data_detail_logging": false,
"enforce_org_quotas": false,
"experimental_process_org_off_thread": false,
"monitor": {
    "enable_trigger_monitors": false,
    "configuration": {
        "method": "",
        "target_path": "",
        "template_path": "",
        "header_map": null,
        "event_timeout": 0
    },
    "global_trigger_limit": 0,
    "monitor_user_keys": false,
    "monitor_org_keys": false
},
"max_idle_connections": 0,
"max_idle_connections_per_host": 0,
"max_conn_time": 0,
"close_connections": false,
"enable_custom_domains": false,
"allow_master_keys": false,
"service_discovery": {
    "default_cache_timeout": 0
},
"proxy_ssl_insecure_skip_verify": false,
"proxy_enable_http2": false,
"proxy_ssl_min_version": 0,
"proxy_ssl_max_version": 0,
"proxy_ssl_ciphers": null,
"proxy_default_timeout": 0,
"proxy_ssl_disable_renegotiation": false,
"proxy_close_connections": false,
"uptime_tests": {
    "disable": false,
    "poller_group": "",
    "config": {
        "failure_trigger_sample_size": 0,
        "time_wait": 0,
        "checker_pool_size": 0,
        "enable_uptime_analytics": true
    }
},
"health_check": {
    "enable_health_checks": false,
    "health_check_value_timeouts": 0
},
"health_check_endpoint_name": "",
"oauth_refresh_token_expire": 0,
"oauth_token_expire": 0,
"oauth_token_expired_retain_period": 0,
"oauth_redirect_uri_separator": "",
"oauth_error_status_code": 0,
"enable_key_logging": false,
"ssl_force_common_name_check": false,
"enable_analytics": true,
"analytics_config": {
    "type": "",
    "ignored_ips": [],
    "enable_detailed_recording": false,
    "enable_geo_ip": false,
    "geo_ip_db_path": "",
    "normalise_urls": {
        "enabled": false,
        "normalise_uuids": false,
        "normalise_numbers": false,
        "custom_patterns": null
    },
    "pool_size": 0,
    "records_buffer_size": 0,
    "storage_expiration_time": 0,
    "enable_multiple_analytics_keys": false,
    "purge_interval": 0
},
"enable_separate_analytics_store": false,
"analytics_storage": {
    "type": "redis",
    "addrs": [
        "10.168.3.48:31836",
        "10.168.3.49:31258",
        "10.168.3.55:30167",
        "10.168.3.49:31486",
        "10.168.3.48:30618",
        "10.168.3.55:31640"
    ],
    "username": "lBspyDLPvyk=",
    "password": "xZGWU/onqypU9A5F2Meung==",
    "database": 0,
    "optimisation_max_idle": 100,
    "optimisation_max_active": 0,
    "timeout": 0,
    "enable_cluster": true,
    "use_ssl": false,
    "ssl_insecure_skip_verify": false
},
"liveness_check": {
    "check_duration": 0
},
"dns_cache": {
    "enabled": false,
    "ttl": 3600,
    "multiple_ips_handle_strategy": "no_cache"
},
"disable_regexp_cache": false,
"regexp_cache_expire": 0,
"local_session_cache": {
    "disable_cached_session_state": false,
    "cached_session_timeout": 0,
    "cached_session_eviction": 0
},
"enable_separate_cache_store": false,
"cache_storage": {
    "type": "redis",
    "addrs": [
        "10.168.3.48:31836",
        "10.168.3.49:31258",
        "10.168.3.55:30167",
        "10.168.3.49:31486",
        "10.168.3.48:30618",
        "10.168.3.55:31640"
    ],
    "username": "lBspyDLPvyk=",
    "password": "xZGWU/onqypU9A5F2Meung==",
    "database": 0,
    "optimisation_max_idle": 100,
    "optimisation_max_active": 0,
    "timeout": 0,
    "enable_cluster": true,
    "use_ssl": false,
    "ssl_insecure_skip_verify": false
},
"enable_bundle_downloader": false,
"bundle_base_url": "",
"bundle_insecure_skip_verify": false,
"enable_jsvm": false,
"jsvm_timeout": 0,
"disable_virtual_path_blobs": false,
"tyk_js_path": "",
"middleware_path": "middleware",
"coprocess_options": {
    "enable_coprocess": true,
    "coprocess_grpc_server": "tcp://127.0.0.1:5555",
    "grpc_recv_max_size": 100000000,
    "grpc_send_max_size": 100000000,
    "python_path_prefix": "",
    "python_version": ""
},
"ignore_endpoint_case": false,
"ignore_canonical_mime_header_key": true,
"log_level": "debug",
"tracing": {
    "name": "",
    "enabled": false,
    "options": null
},
"newrelic": {
    "app_name": "",
    "license_key": ""
},
"enable_http_profiler": false,
"use_redis_log": false,
"use_sentry": false,
"sentry_code": "",
"sentry_log_level": "",
"use_syslog": false,
"syslog_transport": "",
"syslog_network_addr": "",
"use_graylog": false,
"graylog_network_addr": "",
"use_logstash": false,
"logstash_transport": "",
"logstash_network_addr": "",
"track_404_logs": false,
"statsd_connection_string": "",
"statsd_prefix": "",
"event_handlers": {
  "events": null
},
"event_trigers_defunct": null,
"event_triggers_defunct": null,
"hide_generator_header": false,
"suppress_default_org_store": false,
"legacy_enable_allowance_countdown": false,
"force_global_session_lifetime": false,
"global_session_lifetime": 0,
"kv": {
    "consul": {
        "address": "",
        "scheme": "",
        "datacenter": "",
        "http_auth": {
            "username": "",
            "password": ""
        },
        "wait_time": 0,
        "token": "",
        "tls_config": {
            "address": "",
            "ca_file": "",
            "ca_path": "",
            "cert_file": "",
            "key_file": "",
            "insecure_skip_verify": false
        }
    },
    "vault": {
        "address": "",
        "agent_address": "",
        "max_retries": 0,
        "timeout": 0,
        "token": "",
        "kv_version": 0
    }
},
"secrets": null,
"override_messages": null,
"cloud": false,
"jwt_ssl_insecure_skip_verify": false

}

Additional context
Add any other context about the problem here.

Hi @Linh_Hoang_Ha,

Welcome to the community :tada:

This is expected behaviour.
You need to add the API test1 to the access_rights of the policy default.
It is not enough to only add the policy, default, to jwt_default_polciies in test1 API.

Hi @Ubong
thank you for the reply.
I just think empty access_rights in policy imply that key using it can access all API.