[
'role' => 'retailer',
'service' => 'Orders',
'action' => ['index', 'view'],
'method' => 'GET'
],
I'm already getting my Jwt Token by logging into the system. Then I send that token in Authorization header like 'Authorization: Bearer ' to access my restricted endpoint at /api/orders.
{
"status": "error",
"message": "Forbidden authorization request on line 36 in C:\\xampp-new\\htdocs\\luna\\vendor\\cakedc\\cakephp-api\\src\\Middleware\\UnauthorizedHandler\\ApiExceptionHandler.php",
"code": 500,
"data": null,
"trace": [
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\authorization\\src\\Middleware\\AuthorizationMiddleware.php",
"line": 139,
"function": "handle",
"class": "CakeDC\\Api\\Middleware\\UnauthorizedHandler\\ApiExceptionHandler"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\cakephp\\src\\Http\\Runner.php",
"line": 73,
"function": "process",
"class": "Authorization\\Middleware\\AuthorizationMiddleware"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\src\\Middleware\\LunaParseApiRequestMiddleware.php",
"line": 88,
"function": "handle",
"class": "Cake\\Http\\Runner"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\cakephp\\src\\Http\\Runner.php",
"line": 73,
"function": "process",
"class": "App\\Middleware\\LunaParseApiRequestMiddleware"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\authentication\\src\\Middleware\\AuthenticationMiddleware.php",
"line": 122,
"function": "handle",
"class": "Cake\\Http\\Runner"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\cakephp\\src\\Http\\Runner.php",
"line": 73,
"function": "process",
"class": "Authentication\\Middleware\\AuthenticationMiddleware"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\cakephp\\src\\Http\\Runner.php",
"line": 58,
"function": "handle",
"class": "Cake\\Http\\Runner"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\cakephp\\src\\Routing\\Middleware\\RoutingMiddleware.php",
"line": 172,
"function": "run",
"class": "Cake\\Http\\Runner"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\cakephp\\src\\Http\\Runner.php",
"line": 73,
"function": "process",
"class": "Cake\\Routing\\Middleware\\RoutingMiddleware"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\ozee31\\cakephp-cors\\src\\Routing\\Middleware\\CorsMiddleware.php",
"line": 19,
"function": "handle",
"class": "Cake\\Http\\Runner"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\cakephp\\src\\Http\\Runner.php",
"line": 73,
"function": "process",
"class": "Cors\\Routing\\Middleware\\CorsMiddleware"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\cakephp\\src\\Routing\\Middleware\\AssetMiddleware.php",
"line": 68,
"function": "handle",
"class": "Cake\\Http\\Runner"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\cakephp\\src\\Http\\Runner.php",
"line": 73,
"function": "process",
"class": "Cake\\Routing\\Middleware\\AssetMiddleware"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\cakephp\\src\\Error\\Middleware\\ErrorHandlerMiddleware.php",
"line": 121,
"function": "handle",
"class": "Cake\\Http\\Runner"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\cakephp\\src\\Http\\Runner.php",
"line": 73,
"function": "process",
"class": "Cake\\Error\\Middleware\\ErrorHandlerMiddleware"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\debug_kit\\src\\Middleware\\DebugKitMiddleware.php",
"line": 60,
"function": "handle",
"class": "Cake\\Http\\Runner"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\cakephp\\src\\Http\\Runner.php",
"line": 73,
"function": "process",
"class": "DebugKit\\Middleware\\DebugKitMiddleware"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\cakephp\\src\\Http\\Runner.php",
"line": 58,
"function": "handle",
"class": "Cake\\Http\\Runner"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\vendor\\cakephp\\cakephp\\src\\Http\\Server.php",
"line": 90,
"function": "run",
"class": "Cake\\Http\\Runner"
},
{
"file": "C:\\xampp-new\\htdocs\\luna\\webroot\\index.php",
"line": 40,
"function": "run",
"class": "Cake\\Http\\Server"
}
]
}
When I debug, I see that **it never tries to authenticate the user using any Jwt Authenticator. It fails for SessionAuthenticator and TokenAuthenticator (both from Cakephp/authentication plugin), but it never uses any Jwt Authenticator.
return [
'Api' => [
'useVersioning' => false,
'Service' => [
'default' => [
'options' => [
'Extension' => [
'CakeDC/Api.OptionsHandler'
],
],
'Action' => [
'default' => [
'Auth' => [
'authenticate' => [
'CakeDC/Api.Jwt'
],
],
'Extension' => [
'CakeDC/Api.Cors',
]
],
'Index' => [
'Extension' => [
'CakeDC/Api.Filter',
MagicSortExtension::class
],
]
],
],
'retailers' => [
'Action'=>[
'Login'=>[
'Auth' => [
'authenticate' => [
'CakeDC/Api.Form'
],
]
]
]
],
],
'Jwt' =>[
'enabled' => true,
'userModel'=>'Retailers'
],
]
];
return [
'CakeDC/Auth.api_permissions' => [
[
'role' => '*',
'service' => '*',
'action' => '*',
'method' => 'OPTIONS',
'bypassAuth' => true,
],
[
'role' => '*',
'service' => 'Retailers',
'action' => ['login', 'signup'],
'method' => 'POST',
'bypassAuth' => true,
],
[
'role' => 'retailer',
'service' => 'Orders',
'action' => ['index', 'view'],
'method' => 'GET',
],
]
];