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

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

Jun 15, 2023 pm 12:24 PM
laravel oauth passport

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으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Laravel - 장인 명령 Laravel - 장인 명령 Aug 27, 2024 am 10:51 AM

Laravel - Artisan Commands - Laravel 5.7은 새로운 명령을 처리하고 테스트하는 새로운 방법을 제공합니다. 여기에는 장인 명령을 테스트하는 새로운 기능이 포함되어 있으며 데모는 아래에 언급되어 있습니다.

Laravel - 페이지 매김 사용자 정의 Laravel - 페이지 매김 사용자 정의 Aug 27, 2024 am 10:51 AM

Laravel - 페이지 매김 사용자 정의 - Laravel에는 사용자나 개발자가 페이지 매김 기능을 포함하는 데 도움이 되는 페이지 매김 기능이 포함되어 있습니다. Laravel 페이지네이터는 쿼리 빌더 및 Eloquent ORM과 통합되어 있습니다. 자동 페이지 매김 방법

Laravel에서 이메일 전송이 실패 할 때 반환 코드를 얻는 방법은 무엇입니까? Laravel에서 이메일 전송이 실패 할 때 반환 코드를 얻는 방법은 무엇입니까? Apr 01, 2025 pm 02:45 PM

Laravel 이메일 전송이 실패 할 때 반환 코드를 얻는 방법. Laravel을 사용하여 응용 프로그램을 개발할 때 종종 확인 코드를 보내야하는 상황이 발생합니다. 그리고 실제로 ...

laravel 일정 작업이 실행되지 않습니다 : 스케줄 후 작업이 실행되지 않으면 어떻게해야합니까? laravel 일정 작업이 실행되지 않습니다 : 스케줄 후 작업이 실행되지 않으면 어떻게해야합니까? Mar 31, 2025 pm 11:24 PM

laravel 일정 작업 실행 비 응답 문제 해결 Laravel의 일정 작업 일정을 사용할 때 많은 개발자 가이 문제에 직면합니다 : 스케줄 : 실행 ...

Laravel에서는 이메일로 확인 코드를 보내지 못하는 상황을 처리하는 방법은 무엇입니까? Laravel에서는 이메일로 확인 코드를 보내지 못하는 상황을 처리하는 방법은 무엇입니까? Mar 31, 2025 pm 11:48 PM

Laravel의 이메일을 처리하지 않는 방법은 LaRavel을 사용하는 것입니다.

DCAT 관리자에서 데이터를 추가하기 위해 클릭하는 사용자 정의 테이블 기능을 구현하는 방법은 무엇입니까? DCAT 관리자에서 데이터를 추가하기 위해 클릭하는 사용자 정의 테이블 기능을 구현하는 방법은 무엇입니까? Apr 01, 2025 am 07:09 AM

DCAT를 사용할 때 DCATADMIN (LARAVEL-ADMIN)에서 데이터를 추가하려면 사용자 정의의 테이블 기능을 구현하는 방법 ...

Laravel - 덤프 서버 Laravel - 덤프 서버 Aug 27, 2024 am 10:51 AM

Laravel - 덤프 서버 - Laravel 덤프 서버는 Laravel 5.7 버전과 함께 제공됩니다. 이전 버전에는 덤프 서버가 포함되어 있지 않습니다. 덤프 서버는 laravel/laravel 작곡가 파일의 개발 종속성이 됩니다.

Laravel Redis Connection 공유 : 선택 메소드가 다른 연결에 영향을 미치는 이유는 무엇입니까? Laravel Redis Connection 공유 : 선택 메소드가 다른 연결에 영향을 미치는 이유는 무엇입니까? Apr 01, 2025 am 07:45 AM

Laravel 프레임 워크 및 Laravel 프레임 워크 및 Redis를 사용할 때 Redis 연결을 공유하는 데 영향을 줄 수 있습니다. 개발자는 문제가 발생할 수 있습니다. 구성을 통해 ...

See all articles