Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

420
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda