详解Laravel5.6 Passport实现Api接口认证
在上线的Web应用中,如何保证用户使用的安全性?通常我们需要考虑到用户的认证。在很多情况下,应用对外提供了API接口,我们需要在每个请求中都进行认证,才能保证数据的安全性。这篇文章将通过Laravel的Passport套件充分讲解如何实现API接口认证,为我们的应用增加认证安全性。
安装Passport
先使用composer进行安装Passport:
composer require laravel/passport
安装完基础套件后,我们需要进行数据库迁移和配置
数据库迁移
执行数据库迁移命令:
php artisan migrate
配置
Passport的配置代码都在 config/auth.php
文件中,我们需要增加几个Provider来完成设置。在 providers
数组中添加:
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'clients' => [
'driver' => 'eloquent',
'model' => Laravel\Passport\Client::class,
],
'personal_access_tokens' => [
'driver' => 'eloquent',
'model' => Laravel\Passport\PersonalAccessClient::class,
],
这意味着要让Passport为我们的应用程序处理用户身份验证和所有Oauth2的客户端。我们还需要执行Passport的安装命令:
php artisan passport:install
这个命令将会自动生成Client ID和Client Secret,并将所有的令牌相关的数据表迁移到您的数据库中。
现在您可以在 app/User
模型中使用 HasApiTokens
Trait 来开始给用户发个人访问令牌:
<?php
namespace App;
use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
// ...
}
实现认证
现在我们来测试下如何使用Passport实现API接口认证。我们需要实现如下三种API认证方式:
- Passport API Token认证
- Passport基于Auth2的Password Grant认证
- Passport基于OAuth2的Implicit Grant认证
Passport API Token认证
API Token认证方式是一种简单的方式,适配已有的基于session的身份验证流程,并增加了一些API额外特点。
使用示例
使用postman进行测试,并添加Header:Authorization: Bearer {$API_TOKEN}
其中{$API_TOKEN}
为我们之前创建的个人访问令牌
Passport基于Auth2的Password Grant认证
Password Grant认证方式旨在通过API使用OAuth2。可以在header中带上token或作为查询参数传递。当然也可以在表单以post方式以密码方式(password grant)实现。
使用示例
使用postman进行测试,并向/oauth/token
路径post以下数据:
{
grant_type: 'password',
client_id: '{$client_id}',
client_secret: '{$client_secret}',
username: '{$username}',
password: '{$password}',
scope: '',
}
其中:
{$client_id}
和{$client_secret}
都可以从/oauth/clients
中获取到{$username}
和{$password}
分别为测试用户的用户名和密码
Passport基于OAuth2的Implicit Grant认证
Implicit Grant认证方式是一个尽可能简单的OAuth2认证。当用户可以直接从用户代理(浏览器)中获取令牌时,他们很有用。例如通过前端的登录页面进行的登录后,直接以token方式传给后台。
使用示例
使用postman进行测试,在请求的路径添加以下查询参数:
/oauth/authorize?client_id={$client_id}&redirect_uri={$redirect_uri}&response_type=token&scope=
其中:
{$client_id}
和{$redirect_uri}
都需要设置为已有的oauth客户端
结论
使用Laravel Passport可以为我们的应用程序增加安全认证。这个教程中我演示了如何使用Passport实现三种API认证方式,希望会为大家带来帮助。
参考资料
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Laravel5.6 Passport实现Api接口认证 - Python技术站