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

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으로 문의하세요.
작업 관리 도구 : 원격 프로젝트의 진행 상황 우선 순위 및 추적작업 관리 도구 : 원격 프로젝트의 진행 상황 우선 순위 및 추적May 02, 2025 am 12:25 AM

taskManagementToolsEnsentialForeMoteProjectManagementByPirizingTaskSandTrackingProgress.1) USETOOLSLIKETRELLOANATOSETPRIORITIESWITHLABELSORTAGS.2) EmployToolslikeJiraanddonday.comforvisualTrackingWithGantTchartSandprogressbars.3) k

최신 Laravel 버전은 성능을 어떻게 향상 시키는가?최신 Laravel 버전은 성능을 어떻게 향상 시키는가?May 02, 2025 am 12:24 AM

Laravel10EnhancesPerformancetHroughseveralKeyFeatures.1) ItinTroduceSqueryBuilderCachingTucedAtabaseload.2) ITOPTIMIZESELOQUENTMODELLOADINGWITHLAZYLOWNEDPROXIES.3) ITIMPROVESTINGWITHANEWCACHINGSYSTEM.4) ITENHANCES WITHENTEMPHANCES BLOWTETETEMPLOTETEMPHENCESTEMPHENTSE

풀 스택 Laravel 애플리케이션을위한 배포 전략풀 스택 Laravel 애플리케이션을위한 배포 전략May 02, 2025 am 12:22 AM

최고의 풀 스택 Laravel 애플리케이션 배포 전략에는 다음이 포함됩니다. 1. 제로 다운 타임 배포, 2. 청록색 배포, 3. 연속 배포 및 4. Canary Release. 1. 제로 다운 타임 배포는 Envoy 또는 배치자를 사용하여 배포 프로세스를 자동화하여 업데이트 될 때 애플리케이션을 사용할 수 있도록합니다. 2. Blue 및 Green Deployment는 두 가지 환경을 유지하여 다운 타임 배포를 가능하게하며 빠른 롤백을 허용합니다. 3. 지속적인 배포는 githubactions 또는 gitlabci/cd를 통해 전체 배포 프로세스를 자동화합니다. 4. Canary는 NGINX 구성을 통해 출시되어 성능 최적화와 빠른 롤백을 보장하기 위해 사용자에게 새 버전을 점차 홍보합니다.

풀 스택 Laravel 애플리케이션 스케일링 : 모범 사례 및 기술풀 스택 Laravel 애플리케이션 스케일링 : 모범 사례 및 기술May 02, 2025 am 12:22 AM

ToscalealaravelApplicationeficationfictically, Focusondatabasesharding, 캐싱, 하중 발행 및 Microservices.1) 구현 대자 방당 분배 된 분산 된 타타 이탈 라제스 퍼포먼스

침묵의 투쟁 : 분산 팀의 커뮤니케이션 장벽 극복침묵의 투쟁 : 분산 팀의 커뮤니케이션 장벽 극복May 02, 2025 am 12:20 AM

TovercomeCommunicationBarriersindistributedTeams, 사용 : 1) videocallsforface-to-faceintercation, 2) setClearResponsetImeexpectations, 3) ChooseAppropriateCommunicationTools, 4) CreateAteAmcommunicationGuide, 및 5) spuctionPersonalboundIVestOverventBurnout

풀 스택 프로젝트에서 프론트 엔드 템플릿에 Laravel Blade 사용풀 스택 프로젝트에서 프론트 엔드 템플릿에 Laravel Blade 사용May 01, 2025 am 12:24 AM

laravelbladeenhancesfrontendtemplatinginfull-stackprojectsbyofferingcleansyntaxandpowerfulfeatures.1) itallowsforeasyvaribledisplayandcontrolstructures.2) bladesupportscreatingAndAndErscreatingCreatingScreatingAndErsingComponents, aidingininagingComplexUis.3) iteffort handleslyous

Laravel을 사용한 전체 스택 애플리케이션 구축 : 실용적인 튜토리얼Laravel을 사용한 전체 스택 애플리케이션 구축 : 실용적인 튜토리얼May 01, 2025 am 12:23 AM

laravelisidealforfull-stackapplicationsduetoitselegantsyntax, 포괄적 인 Cosystem 및 powerfulfeatures.1) audeeloquentormforintucive backenddatamanipulation, butavoidn 1queryisss.2) Employblatingforcleanfrontendviews, beencautiousofoversing@i

원격 역할을 유지하기 위해 어떤 종류의 도구를 사용 했습니까?원격 역할을 유지하기 위해 어떤 종류의 도구를 사용 했습니까?May 01, 2025 am 12:21 AM

FERREMOTWORK, IUSEZOOMFORVIDEOCALLS, SLACKFORMESSIGAGIGAGING, TRELLOFORPROJECTMENAGEMENT, 및 GITHUBFORCODECOLABORATION.1) ZOOMISRELIBLEFORLARGEMEETINGSBUTHIMELIMITSONTHEFREEVERSION.2) SlackIntegrateswellwellsButcanLeadtonoTificationWovernovernovernovernovernovernodificationwordnowload

See all articles

핫 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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.