首頁 > 後端開發 > php教程 > 使用Laravel中的Passport設置OAuth2服務器

使用Laravel中的Passport設置OAuth2服務器

Lisa Kudrow
發布: 2025-03-05 11:32:11
原創
517 人瀏覽過

Set Up an OAuth2 Server Using Passport in Laravel

>本教程演示了使用Laravel Passport庫在Laravel應用程序中構建強大的OAuth2服務器。我們將介紹服務器配置,並提供消耗OAuth2 API的實踐示例。 假定基本的OAuth2知識。 Laravel護照大大簡化了該過程。

>

教程分為兩個部分:庫安裝和配置,然後創建和消費示例資源。

服務器配置

本節詳細詳細安裝和配置護照的必要組件以使用Laravel運行。

>安裝Laravel Passport Library>

使用Composer安裝庫:

composer require laravel/passport
登入後複製
這將完成護照安裝。 接下來,我們將其集成到Laravel。

啟用護照服務

> Laravel使用服務提供商來管理應用程序服務。要啟用護照,您需要將其服務提供商添加到。 (如果不熟悉Laravel服務提供商,請參考相關的介紹資源。)至關重要的是,您還必須註冊Passport的路由(在

>的

方法中)並運行config/app.php命令。此命令還允許客戶端創建。讓我們創建一個演示客戶端。 boot app/Providers/AuthServiceProvider.php php artisan passport:install命令提示以獲取詳細信息:用戶ID,客戶端名稱和重定向URI。 重定向URI是授權後用戶重定向的地方,攜帶授權代碼。

>讓我們假設以下輸出:
php artisan passport:client
登入後複製
>

現在,我們可以測試oauth2 apis。

在此示例中,我們將在文檔root中創建
<code>New client created successfully.
Client ID: 3
Client secret: 1BT1tNj0Are27IGvIZe4lE2jRjtiVt0fmtaWBe8m</code>
登入後複製
>目錄(理想情況下,這將位於消耗API的第三方應用程序上)。 >

>

create

oauth2_client/auth_redirection.php oauth2_client

記住將佔位符

替換為您的實際值。
<?php
$query = http_build_query([
    'client_id' => '3',
    'redirect_uri' => 'http://localhost/oauth2_client/callback.php',
    'response_type' => 'code',
    'scope' => '',
]);

header('Location: http://your-laravel-site-url/oauth/authorize?' . $query);
?>
登入後複製

接下來,創建client_idoauth2_client/callback.php redirect_uri

再次,根據需要調整URL和憑據。 >

<?php
if (isset($_REQUEST['code']) && $_REQUEST['code']) {
    $ch = curl_init();
    $url = 'http://your-laravel-site-url/oauth/token';

    $params = [
        'grant_type' => 'authorization_code',
        'client_id' => '3',
        'client_secret' => '1BT1tNj0Are27IGvIZe4lE2jRjtiVt0fmtaWBe8m',
        'redirect_uri' => 'http://localhost/oauth2_client/callback.php',
        'code' => $_REQUEST['code'],
    ];

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    $params_string = '';
    if (is_array($params) && count($params)) {
        foreach ($params as $key => $value) {
            $params_string .= $key . '=' . $value . '&';
        }
        rtrim($params_string, '&');
        curl_setopt($ch, CURLOPT_POST, count($params));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params_string);
    }

    $result = curl_exec($ch);
    curl_close($ch);
    $response = json_decode($result);

    if (isset($response->access_token) && $response->access_token) {
        $access_token = $response->access_token;

        $ch = curl_init();
        $url = 'http://your-laravel-site-url/api/user/get';
        $header = ['Authorization: Bearer ' . $access_token];
        $query = http_build_query(['uid' => '1']);

        curl_setopt($ch, CURLOPT_URL, $url . '?' . $query);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        $result = curl_exec($ch);
        curl_close($ch);
        $response = json_decode($result);
        var_dump($result);
    }
}
?>
登入後複製
WorkFlow

用戶與兩個應用程序進行交互:Laravel應用程序(與現有帳戶)和第三方客戶端(auth_redirection.php和callback.php)。

  1. 用戶訪問http://localhost/oauth2_client/auth_redirection.php
  2. >
  3. 此重定向到Laravel應用程序的授權頁面。
  4. >登錄和授權後,用戶將使用授權代碼重定向到
  5. >。 http://localhost/oauth2_client/callback.php
  6. >交換代碼訪問令牌。
  7. > callback.php訪問令牌用於進行API調用(例如,
  8. )。
  9. > http://your-laravel-site-url/api/user/get
結論

>本教程展示了Laravel Passport在設置OAuth2服務器方面的易用性。 要進行進一步的Laravel開發資源,請探索Envato市場。

以上是使用Laravel中的Passport設置OAuth2服務器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板