OAuth Study with Laravel Passport
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
Laravel 프레임워크를 사용하는 개발자, OAuth 인증 시스템 구현을 위한 중급 이상의 경험자
핵심 요약
- OAuth2 프로토콜을 기반으로 Laravel Passport로 인증 서버 구현 가능
- PKCE(PKCE)를 통해 client_secret 노출 방지 및 보안 강화
- Laravel 12 기준으로 AuthServiceProvider, config/auth.php, User 모델에 Passport 설정 적용 필요
섹션별 세부 요약
1. OAuth 프로토콜 개요
- Authorization Code Grant 방식으로 사용자 권한 요청 →
Authorization Code
발급 →Access Token
요청 → 리소스 접근 - PKCE는
code_verifier
와code_challenge
로 인증,client_secret
사용 없음 code_challenge
= SHA-256 해시 + Base64 URL 인코딩 적용 (RFC 7636 기준)
2. Laravel Passport 설치 및 설정
php artisan install:passport --install
명령어로 설치AuthServiceProvider
에서Passport::authorizationView()
설정 및 토큰 유효기간 조정config/auth.php
에passport
Guard 추가,User
모델에HasApiTokens
trait 적용authorize
뷰 직접 생성 필요 (Laravel 12 이후 기본 제공 X)
3. OAuth 클라이언트 생성 및 요청 흐름
php artisan passport:client --public
명령어로 PKCE 사용 클라이언트 생성GET /authorize
요청 시 로그인 → 권한 승인 →code
발급POST /token
요청 시code_verifier
로Access Token
및Refresh Token
발급GET /user
엔드포인트 접근 시auth:api
미들웨어 +CheckToken
으로scope
검증
4. 실무 적용 사항
- Postman 사용 권장: HTTP 요청 테스트 용이
routes/api.php
에서CheckToken::using('user:read')
으로 스코프 제한 적용- Laravel 12 기준으로
tokensCan()
메서드로 토큰 권한 범위 정의
결론
- Laravel Passport를 사용해 OAuth2 서버 구현 시 PKCE 설정과 AuthServiceProvider 구성 필수
code_verifier
생성 시bin2hex(random_bytes(32))
+ SHA-256 해시 적용- Postman 사용을 통해
Access Token
요청 및scope
기반의 권한 관리 테스트 가능