首页 > 后端开发 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板