Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

417
Views
¿Por qué las credenciales del cliente deben estar asociadas con un usuario en Laravel Passport?

Quiero usar Credenciales de cliente para autenticar aplicaciones cliente para acceder a la API.

Mi problema es con la creación de credenciales de cliente. El uso del php artisan passport:client requiere que ingrese un ID de usuario para asociar el cliente a ese usuario. no lo entiendo ¿Por qué la aplicación cliente tiene que estar asociada a un usuario? ¿O hay otra manera?

El comando pasaporte: cliente solo admite la creación de clientes de concesión de contraseña y clientes de concesión personal. No creo que ninguno de ellos sea lo que necesito.

Lo que realmente necesito es crear credenciales de cliente que solo serán utilizadas por la aplicación cliente para autorizarse a sí misma para acceder a algunas API. ¿Como hacer eso?

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Supongo que desea utilizar la autenticación de máquina a máquina (sin interacciones del usuario)

Recomendaría leer los documentos un par de veces para acostumbrarse.

No creo que haya una forma específica de crear un solo cliente de credenciales de cliente, lo que hago es crear un cliente personal y luego cambiar el campo para cliente personal en la base de datos personal_access_client 1 => 0

Puede usar la opción de cliente personal, como se ve en la opción --help

 Usage: passport:client [options] Options: --personal Create a personal access token client --password Create a password grant client --name[=NAME] The name of the client -h, --help Display this help message ...

php artisan passport:client --personal

producción

 Personal access client created successfully. Client ID: 1 Client Secret: LbjQNxK5SQZ3pPrEBUwbkE8vaRkg8jh25Qh43HYy

Necesitará usar otro middleware que no sea el predeterminado porque no hay ningún usuario presente al usar este método

  • Definir middleware de alias de credenciales de cliente en kernel
  • Agregar middleware a la ruta
  • Enviar petición

Defina el middleware de credenciales de cliente para el kernel http

Clase \App\Http\Kernel :

 protected $routeMiddleware = [ 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'client_credentials' => \Laravel\Passport\Http\Middleware\CheckClientCredentials::class, //ommited ];

Definir middleware en ruta

 Route::get('/test', 'ApiTestController@test')->middleware('client_credentials');

Clase \App\Http\Controllers\ApiTestController :

 public function test() { return response()->json(['data' => 'hey'] ); }

Desde php artisan route:list

 GET|HEAD | api/test | App\Http\Controllers\ApiTestController@test | api,client_credentials |

Enviar petición

Siguiendo la solicitud especificada en la documentación sobre client-credentials-grant-tokens

Uso Postman por simplicidad, envío fácilmente una solicitud de prueba con Postman (www.getpostman.com)

Establezca la autorización en OAuth 2.0, imagen: Autenticación de cartero

Establezca la URL del token de acceso, la identificación del cliente, el secreto del cliente y el tipo de concesión en 'Credenciales del cliente', imagen: Campos OAuth del cartero

El cartero crea un token y lo agrega a la URL o al encabezado, en este caso, al encabezado.

 Accept:application/json Authorization:Bearer eyJ0eXAiOi...KCjK0

Respuesta:

 { "data": "hey" }
about 4 years ago · Santiago Trujillo Report

0

Estas respuestas son un poco viejas.

Ciertamente puede agregar credenciales de cliente.

 php artisan passport:client --client protected $signature = 'passport:client {--personal : Create a personal access token client} {--password : Create a password grant client} {--client : Create a client credentials grant client} {--name= : The name of the client} {--provider= : The name of the user provider} {--redirect_uri= : The URI to redirect to after authorization } {--user_id= : The user ID the client should be assigned to } {--public : Create a public client (Auth code grant type only) }';
about 4 years ago · Santiago Trujillo Report

0

Iba a comentar pero aun no tengo suficiente reputacion =p

Puede darle al comando un parámetro de nombre que no requiera ninguna entrada del usuario. En cuanto a cómo le pasaría ese secreto de cliente a su cliente sin intervención manual, es donde entraría la verdadera magia.

 php artisan passport:client --personal --name={someName}

Ese comando todavía te daría:

 Personal access client created successfully. Client ID: 1 Client Secret: LbjQNxK5SQZ3pPrEBUwbkE8vaRkg8jh25Qh43HYy

como se esperaba.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!