Laravel Passport는 OAuth 2.0 서버 구현을 위해 필요한 모든 기능을 제공합니다. 이 과정은 몇 가지 핵심 단계로 나눌 수 있으며, 각 단계별로 필요한 작업을 상세하게 설명하겠습니다.
### 1. Laravel 프로젝트 및 환경 설정
- **프로젝트 생성**: Composer를 사용하여 새 Laravel 프로젝트를 생성합니다.
composer create-project --prefer-dist laravel/laravel projectName
- **데이터베이스 설정**: `.env` 파일에서 데이터베이스 연결 정보(DB_CONNECTION, DB_DATABASE, DB_USERNAME, DB_PASSWORD 등)를 설정합니다.
### 2. Laravel Passport 설치 및 설정
- **Passport 설치**: Composer를 통해 프로젝트에 Passport를 추가합니다.
composer require laravel/passport
- **데이터베이스 마이그레이션**: Passport가 사용할 테이블을 생성합니다.
php artisan migrate
- **Passport 설치 명령 실행**: 이 명령은 필요한 암호화 키를 생성하고, OAuth 클라이언트를 데이터베이스에 저장합니다.
php artisan passport:install
### 3. 서비스 프로바이더와 구성
- **Passport 서비스 프로바이더 등록**: Laravel 5.5 이상에서는 자동으로 등록됩니다. 그렇지 않은 경우 `config/app.php`에 직접 추가해야 합니다.
- **API 인증 가드 설정**: `config/auth.php`에서 API 가드를 Passport 드라이버로 설정합니다.
'guards' => [
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
### 4. Passport 라우팅 및 토큰 설정
- **Passport 라우트 설정**: `App\Providers\AuthServiceProvider`에서 `boot` 메서드 내부에 `Passport::routes();` 호출을 추가하여 Passport 라우트를 활성화합니다.
- **토큰 만료 시간 설정** (선택 사항): 필요에 따라 Access Token과 Refresh Token의 만료 시간을 커스터마이징할 수 있습니다.
### 5. 인증 컨트롤러 및 라우트 구성
- **인증 컨트롤러 생성**: 사용자 인증, 토큰 발급 및 사용자 등록을 위한 컨트롤러를 생성합니다.
- **라우트 설정**: `routes/api.php`에 인증과 관련된 라우트를 정의합니다.
### 6. 프론트엔드 설정
- **클라이언트 ID 및 시크릿**: `php artisan passport:install` 명령을 실행하면 생성되는 클라이언트 ID와 시크릿을 프론트엔드에 제공하여 OAuth 인증 플로우를 구성합니다.
### 7. API 보호 및 사용자 인증
- **미들웨어 사용**: API 라우트를 보호하기 위해 `auth:api` 미들웨어를 사용합니다.
- **사용자 인증**: 클라이언트는 사용자의 인증 정보와 함께 서버에 요청을 보내 Access Token을 받습니다. 이 토큰은 이후 API 요청 시 사용됩니다.
### 8. 테스트 및 디버깅
- **Postman 또는 cURL 사용**: 생성된 API 엔드포인트와 인증 플로우를 테스트합니다.
- **로그 및 오류 메시지 확인**: 예상치 못한 동작이나 오류 발생 시 Laravel 로그를 확인하여 문제를 진
단하고 수정합니다.
### 마무리
이 프로세스를 통해 Laravel Passport를 사용하여 OAuth 서버를 구축하고, 사용자 인증 및 API 보호를 위한 기본적인 구성을 완료할 수 있습니다. 이 가이드는 기본적인 설정을 다루며, 실제 프로젝트에서는 보다 복잡한 인증 요구 사항에 맞게 추가적인 커스터마이징이 필요할 수 있습니다. Laravel Passport의 공식 문서와 OAuth 2.0 스펙을 참고하여 필요한 기능을 추가하고, 보안을 강화하세요.
'DEVEL > PHP' 카테고리의 다른 글
PHP 로또 당첨번호 API (0) | 2025.04.13 |
---|---|
PHP 라라벨 쿼리빌더 테이블 조인 (0) | 2024.04.09 |
PHP POST 전송 (0) | 2024.02.22 |
PHP ChatGPT를 사용해서 번역 프로그램 만들기 (0) | 2024.02.08 |
PHP 내 지갑 트랜잭션 확인 (0) | 2024.01.19 |