安裝 Passport 身分驗證

安裝

composer require laravel/passport

安裝完成大致上會顯示差不多內容。

animal/composer.json 可以看到多了 passport

php artisan migrate

如上圖 Passport 會幫助我們加入相關的資料表,儲存客戶端和Access Token 相關資料表。

客戶端的意思是指,開發者的網站或其他介面要先來我們的API系統,取的一組客戶端的ID 以及 secret,才能在他們自己的網站向我們請求Token,獲取會員的權限。

有點像是白名單的意思,要再這個API系統內有紀錄的才可以對我們申請代表會員的Token。

就跟Facebook 的帳號,可以登入很多網站一樣。例如 FB 帳號可以登入 iT邦幫忙 道理一樣。

Token 這是驗證用戶的憑證,明天會詳細介紹今天先把 Passport 套件裝好!

查看一下 migrate 以後的資料表,新增了五張表。

然後運行命令會創建加密需要公鑰以及私鑰,讓我們可以安全的產生 Access Token。

php artisan passport:install

除此之外,它也會直接幫我們建置用來產生 Access Token 的 personal access和password grant。 id、secret 就是我們客戶端開發者要在他們的網站,或是其他軟體介面上(手機APP…)請求token 需要提供的內容。

產生出來的公鑰、私鑰存放在 animal/storage 資料夾中

設定 Passport

基本內容都有了,接下來做一些設定,引用 Laravel\Passport\HasApiTokenstraitApp\User Model 中

<?php

use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
    
    //略過
}

這個 trait 會幫我們加入 Passport 寫好的方法。

AuthServiceProvider 中的 boot 方法中調用Passport::routes方法。

<?php

use Laravel\Passport\Passport;

class AuthServiceProvider extends ServiceProvider
{
    public function boot()
    {
        $this->registerPolicies();

        Passport::routes();
    }
}

這個方法會註冊必要的路由去核發、換發、側肖 Token,請求客戶端的 Id Secret 之類的路由,如下圖路由表顯示。

默認情況下,Passport發放的訪問令牌是有一年有效期的。

config/auth.php

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'passport', //<-修改這裡
        'provider' => 'users',
        'hash' => false, //這個是Laravel 5.8 出現的,他主要是可以讓 token 再 SHA-256 保護存入資料表
    ],
],

需要認證的API請求時,系統會去使用 Passport 的TokenGuard。

hash 這裡先不調整,以存文字的方式把token存入資料表就好! 如果設定 true 等於存入資料表中的 Token 在 SHA-256 加密保護。

無法反向解開 token,請求 token 時回傳 未加密的 token 資料表儲存 SHA-256 加密後的副本,所以必須要求客戶端請求token後一定要牢牢記住。

安裝完成!結束今天這回合~


發佈留言