>  기사  >  PHP 프레임워크  >  Laravel 개발: Laravel Passport 및 Lumen을 사용하여 API 인증을 구현하는 방법은 무엇입니까?

Laravel 개발: Laravel Passport 및 Lumen을 사용하여 API 인증을 구현하는 방법은 무엇입니까?

WBOY
WBOY원래의
2023-06-15 20:35:241056검색

모바일 기술과 클라우드 컴퓨팅의 급속한 발전으로 많은 기업이 자체 API 서비스를 개발하여 핵심 비즈니스의 일부로 만들었습니다. 이 프로세스에서는 API 데이터를 보호하고 승인된 사용자만 이 API 데이터에 액세스할 수 있도록 하는 것이 매우 중요합니다. 따라서 API 인증이 중요한 주제가 됩니다. Laravel과 Lumen에서는 Laravel Passport를 사용하여 API 인증을 구현할 수 있습니다.

Laravel Passport는 OAuth2 표준을 기반으로 한 API 인증 시스템입니다. API 인증을 생성하는 쉬운 방법을 제공하고 여러 클라이언트 및 인증 방법을 지원합니다. 이번 글에서는 Laravel Passport와 Lumen을 사용하여 API 인증을 구현하는 방법을 다뤄보겠습니다.

Laravel Passport 설치 및 구성

먼저 Laravel 프로젝트에 Laravel Passport를 설치해야 합니다. 다음 명령을 사용하여 설치하십시오.

composer require laravel/passport

설치를 완료한 후 다음 명령을 실행하여 필요한 마이그레이션을 수행해야 합니다.

php artisan migrate

php artisan passport:install

위의 passport:install 명령은 클라이언트와 키를 생성합니다. 신원 확인. 또한 시작 서비스 공급자에서 Laravel Passport가 제공하는 Passport::routes() 메서드를 사용하여 인증 경로를 등록해야 합니다. passport:install命令将创建客户端和密钥,以便进行身份验证。我们还需要在启动服务提供者中使用Laravel Passport提供的Passport::routes()方法来注册身份验证路由:

// app/Providers/AuthServiceProvider.php

use LaravelPassportPassport;

// ...

public function boot() 
{
    // ...
    
    Passport::routes();
}

这将注册Laravel Passport提供的路由,以便我们可以使用它来进行身份验证。同时,我们还需要在config/auth.php配置文件中选择passport驱动:

'guards' => [
    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],

Lumen中使用Laravel Passport

如果我们的项目是使用Lumen框架创建的,那么我们可以使用Laravel Passport的Lumen版本,它提供了与Lumen兼容的方式。我们可以使用以下命令安装Laravel Passport:

composer require dusterio/lumen-passport

安装完成后,我们需要在bootstrap/app.php文件中添加以下两行代码来注册Lumen Passport的服务提供者:

$app->register(DusterioLumenPassportPassportServiceProvider::class);
$app->configure('auth');

在完成注册后,我们需要注册路由和中间件。我们可以在app/Http/routes.php文件中添加以下代码来注册Lumen Passport提供的路由:

$app->group(['middleware' => ['api']], function ($app) {
    DusterioLumenPassportLumenPassport::routes($app, ['prefix' => 'auth']);
});

以上代码中,prefix选项指定了路由前缀,middleware指定了使用的中间件。

接下来,我们需要添加Lumen Passport提供的中间件。在bootstrap/app.php文件中,添加以下代码来注册中间件:

$app->middleware([
    // ...
    DusterioLumenPassportHttpMiddlewareAddCustomHeaders::class,
]);

注册完毕后,我们就完成了Lumen中使用Laravel Passport的配置工作。

使用密码授权方式进行身份验证

一旦我们完成了Laravel Passport的配置,我们就可以使用密码授权方式来进行身份验证。在这种授权方式下,客户端需要使用客户端ID和秘钥来请求访问令牌,然后使用该访问令牌来请求受保护的API资源。

我们可以使用以下代码来请求访问令牌:

$postData = [
    'grant_type' => 'password',
    'client_id' => '{client-id}',
    'client_secret' => '{client-secret}',
    'username' => '{username}',
    'password' => '{password}',
    'scope' => '',
];

$ch = curl_init('http://api.example.com/oauth/token');
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);

$accessToken = json_decode($response)->access_token;

在以上代码中,我们使用了curl库来向我们的API服务请求访问令牌。请注意,{client-id}{client-secret}需要替换为真实的客户端ID和秘钥,{username}{password}

$response = Http::withHeaders([
    'Authorization' => 'Bearer ' . $accessToken,
])->get('http://api.example.com/api/user');

이렇게 하면 Laravel Passport에서 제공하는 경로를 등록하여 인증에 사용할 수 있습니다. 동시에 config/auth.php 구성 파일에서 passport 드라이버도 선택해야 합니다:

rrreee

Using Laravel Passport in Lumen

우리 프로젝트가 Lumen 프레임워크를 사용하여 생성된 경우, 그런 다음 Lumen 호환 방식을 제공하는 Laravel Passport의 Lumen 버전을 사용할 수 있습니다. 다음 명령을 사용하여 Laravel Passport를 설치할 수 있습니다.

rrreee

설치가 완료된 후 bootstrap/app.php 파일에 다음 두 줄의 코드를 추가하여 Lumen Passport 서비스 공급자를 등록해야 합니다.

rrreee

After 등록을 완료하려면 등록 경로와 미들웨어가 필요합니다. app/Http/routes.php 파일에 다음 코드를 추가하여 Lumen Passport에서 제공하는 경로를 등록할 수 있습니다. 🎜rrreee🎜위 코드에서 prefix 옵션은 경로 접두사 를 지정합니다. >middleware code>는 사용되는 미들웨어를 지정합니다. 🎜🎜다음으로 Lumen Passport에서 제공하는 미들웨어를 추가해야 합니다. bootstrap/app.php 파일에 다음 코드를 추가하여 미들웨어를 등록합니다. 🎜rrreee🎜등록이 완료되면 Lumen에서 Laravel Passport를 사용할 수 있도록 구성이 완료되었습니다. 🎜🎜인증을 위해 비밀번호 인증 사용🎜🎜Laravel Passport 구성이 완료되면 인증을 위해 비밀번호 인증을 사용할 수 있습니다. 이 인증 방법에서 클라이언트는 클라이언트 ID와 비밀 키를 사용하여 액세스 토큰을 요청한 다음 액세스 토큰을 사용하여 보호된 API 리소스를 요청해야 합니다. 🎜🎜 다음 코드를 사용하여 액세스 토큰을 요청할 수 있습니다. 🎜rrreee🎜 위 코드에서는 컬 라이브러리를 사용하여 API 서비스에서 액세스 토큰을 요청했습니다. <code>{client-id}{client-secret}는 실제 클라이언트 ID 및 비밀번호인 {username}으로 바꿔야 합니다. 및 {password}는 실제 사용자 자격 증명으로 바꿔야 합니다. 🎜🎜액세스 토큰을 얻으면 이를 사용하여 보호된 API 리소스에 액세스할 수 있습니다. API에 접근할 때 Authorization 헤더에 접근 토큰을 넣어야 합니다. 다음 코드를 사용하여 Laravel에서 이 작업을 수행할 수 있습니다: 🎜rrreee🎜 위 코드에서는 Laravel의 HTTP 클라이언트를 사용하여 API에 액세스합니다. 클라이언트가 요청하면 API 서비스가 토큰의 유효성을 검사하고 보호된 리소스를 반환할 수 있도록 Authorization 헤더에 액세스 토큰을 넣습니다. 🎜🎜결론🎜🎜Laravel Passport와 Lumen을 사용하면 API 서비스에 강력한 인증 기능을 추가할 수 있습니다. API 인증을 구현할 때 OAuth2 인증 프로토콜과 인증 방법을 이해해야 합니다. 비밀번호 승인을 사용할 때 클라이언트는 클라이언트 ID와 비밀 키를 사용하여 액세스 토큰을 요청해야 합니다. 액세스 토큰을 얻으면 이를 사용하여 보호된 API 리소스에 액세스할 수 있습니다. 🎜

위 내용은 Laravel 개발: Laravel Passport 및 Lumen을 사용하여 API 인증을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.