Laravel Passport로 OAuth2 인증 서버 구현 가이드
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

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 요청 → 리소스 접근
  • PKCEcode_verifiercode_challenge로 인증, client_secret 사용 없음
  • code_challenge = SHA-256 해시 + Base64 URL 인코딩 적용 (RFC 7636 기준)

2. Laravel Passport 설치 및 설정

  • php artisan install:passport --install 명령어로 설치
  • AuthServiceProvider에서 Passport::authorizationView() 설정 및 토큰 유효기간 조정
  • config/auth.phppassport Guard 추가, User 모델에 HasApiTokens trait 적용
  • authorize 뷰 직접 생성 필요 (Laravel 12 이후 기본 제공 X)

3. OAuth 클라이언트 생성 및 요청 흐름

  • php artisan passport:client --public 명령어로 PKCE 사용 클라이언트 생성
  • GET /authorize 요청 시 로그인 → 권한 승인 → code 발급
  • POST /token 요청 시 code_verifierAccess TokenRefresh 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 기반의 권한 관리 테스트 가능