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

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

PHPz
PHPz원래의
2023-06-15 12:24:07946검색

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

Laravel은 효율적이고 확장 가능하며 유지 관리가 쉬운 웹 애플리케이션을 쉽게 구축할 수 있게 해주는 인기 있는 PHP 웹 개발 프레임워크입니다. Laravel에는 Laravel Passport를 포함한 많은 기능과 구성 요소가 있습니다. Laravel Passport는 개발자가 애플리케이션에 보안 인증을 쉽게 추가할 수 있도록 도와주는 완전한 OAuth2 서버 구현입니다.

OAuth2는 API 보안을 위한 인증 표준이며 타사 애플리케이션이 API를 통해 사용자 데이터에 액세스할 수 있도록 하는 안전한 방법입니다. Facebook, Google, GitHub, Twitter 등 많은 기업과 조직에서 사용하는 개방형 표준입니다. Laravel Passport는 Laravel 프레임워크의 공식 OAuth2 서버 구현입니다.

아래에서는 Laravel Passport를 사용하여 OAuth2 인증을 구현하는 방법을 보여드리겠습니다.

1단계: Laravel Passport 설치

Composer를 사용하여 Laravel Passport를 설치하세요. 명령줄에 다음 명령을 입력하세요:

composer require laravel/passport

설치가 완료되면 다음 명령을 실행하여 Passport의 구성 파일과 데이터베이스 마이그레이션을 게시하세요.

php artisan passport:install

이 명령은 암호화 키와 생성에 사용되는 데이터베이스 테이블을 생성합니다. 액세스 토큰.

2단계: Passport 설정

Laravel 애플리케이션에서 Passport를 활성화하세요. config/app.php 파일을 편집하고 LaravelPassportPassportServiceProvider::class,를 Provide 배열에 추가하세요. config/app.php文件,将LaravelPassportPassportServiceProvider::class,添加到Provide数组中。

AppUser模型中实现LaravelPassportHasApiTokenstrait。这个Trait将会给用户模型添加一些有关API用户的方法。

接下来,运行数据迁移以创建Passport使用的数据库表结构。

php artisan migrate

步骤3:在Passport中设置客户端

Passport在内部使用了OAuth2客户端-服务器模型。开发人员需要为其客户端创建唯一的“客户端ID”和“客户端密码”。在Laravel Passport中,要创建一个新的客户端,可以使用php artisan passport:client命令。此命令将生成一个客户端ID和客户端密码,这些信息必须妥善存储,以便在API中使用。

php artisan passport:client --client

步骤4:定义API路由

routes/api.php文件中定义您的API路由。Passport包括一个名为auth:api

AppUser 모델에서 LaravelPassportHasApiTokens 특성을 구현하세요. 이 트레이트는 API 사용자와 관련된 몇 가지 메소드를 사용자 모델에 추가합니다.

다음으로 데이터 마이그레이션을 실행하여 Passport에서 사용하는 데이터베이스 테이블 구조를 만듭니다.

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

3단계: Passport에서 클라이언트 설정

Passport는 내부적으로 OAuth2 클라이언트-서버 모델을 사용합니다. 개발자는 클라이언트에 대해 고유한 "클라이언트 ID"와 "클라이언트 비밀번호"를 생성해야 합니다. Laravel Passport에서 새 클라이언트를 생성하려면 php artisan Passport:client 명령을 사용할 수 있습니다. 이 명령은 API에서 사용하기 위해 적절하게 저장되어야 하는 클라이언트 ID와 클라이언트 비밀번호를 생성합니다.

POST /oauth/token HTTP/1.1
Host: your-app.com
Content-Type: application/x-www-form-urlencoded

grant_type=password&
client_id=client-id&
client_secret=client-secret&
username=user@your-app.com&
password=user-password&

4단계: API 경로 정의

routes/api.php 파일에서 API 경로를 정의하세요. Passport에는 요청에 유효한 액세스 토큰이 포함되어 있는지 확인하기 위한 auth:api라는 미들웨어가 포함되어 있습니다. 보호된 경로를 보호하려면 이 미들웨어를 사용해야 합니다.

예:

{
    "token_type": "Bearer",
    "expires_in": 31536000,
    "access_token": "eyJ0eXAiOiJKV1QiLCJ...",
    "refresh_token": "def5020086062f..."
}

5단계: 액세스 토큰 생성

액세스 토큰을 생성하기 전에 사용자는 클라이언트가 자신의 데이터에 액세스할 수 있도록 승인해야 합니다. API 애플리케이션의 경우 프런트 엔드에서 사용자에게 인증 인터페이스를 표시하여 사용자가 클라이언트가 자신의 데이터에 액세스하도록 인증할 수 있도록 해야 합니다.

액세스 토큰을 생성하려면 Laravel 애플리케이션에 POST 요청을 보내세요. POST 액세스 토큰 요청에는 클라이언트 ID, 클라이언트 비밀번호, 사용자 이름 및 비밀번호가 포함되어야 합니다. 요청이 성공하면 Passport는 액세스 토큰을 애플리케이션에 반환합니다.

GET /api/user HTTP/1.1
Host: your-app.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJ...

액세스 토큰 응답은 다음과 같습니다.

rrreee

passport:install 명령을 전달하면 액세스 토큰을 생성하는 데 사용되는 암호화 키가 생성됩니다.

6단계: 액세스 토큰을 사용하여 API 호출 🎜🎜마지막으로 액세스 토큰을 사용하여 보호된 API 엔드포인트를 호출합니다. 요청 헤더를 설정할 때 Bearer 인증 프로토콜을 사용하고 요청에 "Authorization" 헤더를 지정해야 합니다. 🎜🎜예: 🎜rrreee🎜이것은 현재 인증된 사용자의 JSON 표현을 반환합니다. 🎜🎜결론: 🎜🎜Laravel Passport는 OAuth2 인증 흐름을 구현하는 편리한 방법을 제공합니다. 이를 통해 개발자는 Laravel 애플리케이션에 OAuth2 기능을 신속하게 추가하여 API를 더욱 안전하게 만들 수 있습니다. 위의 단계를 통해 Laravel Passport를 사용하여 Laravel에서 OAuth2 인증을 구현하는 방법을 배울 수 있습니다. 🎜

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

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