Auth 객체와 리소스 수준 접근 제어를 유지하되, Supabase를 신원 제공자로 사용하도록 인증을 업그레이드합니다. 이 튜토리얼에서는 Supabase를 사용하지만, 개념은 모든 OAuth2 제공자에 적용됩니다. 다음 내용을 배우게 됩니다:
- 테스트 토큰을 실제 JWT 토큰으로 교체하기
- 안전한 사용자 인증을 위해 OAuth2 제공자와 통합하기
- 기존 권한 부여 로직을 유지하면서 사용자 세션 및 메타데이터 처리하기
배경 지식
OAuth2는 세 가지 주요 역할을 포함합니다:- 인증 서버: 사용자 인증을 처리하고 토큰을 발급하는 신원 제공자(예: Supabase, Auth0, Google)
- 애플리케이션 백엔드: 토큰을 검증하고 보호된 리소스(대화 데이터)를 제공하는 LangGraph 애플리케이션
- 클라이언트 애플리케이션: 사용자가 서비스와 상호작용하는 웹 또는 모바일 앱
사전 요구사항
이 튜토리얼을 시작하기 전에 다음을 확인하세요:- 두 번째 튜토리얼의 봇이 오류 없이 실행되고 있어야 합니다.
- 인증 서버로 사용할 Supabase 프로젝트가 필요합니다.
1. 의존성 설치
필요한 의존성을 설치합니다.custom-auth 디렉토리에서 시작하여 langgraph-cli가 설치되어 있는지 확인하세요:
2. 인증 제공자 설정
다음으로 인증 서버의 URL과 인증용 비공개 키를 가져옵니다. Supabase를 사용하므로 Supabase 대시보드에서 다음을 수행할 수 있습니다:- 왼쪽 사이드바에서 ”⚙ Project Settings”를 클릭한 다음 “API”를 클릭합니다
- 프로젝트 URL을 복사하여
.env파일에 추가합니다
- 서비스 역할 비밀 키를 복사하여
.env파일에 추가합니다:
- “anon public” 키를 복사하여 메모해 둡니다. 나중에 클라이언트 코드를 설정할 때 사용됩니다.
3. 토큰 검증 구현
이전 튜토리얼에서는Auth 객체를 사용하여 하드코딩된 토큰을 검증하고 리소스 소유권을 추가했습니다.
이제 Supabase에서 실제 JWT 토큰을 검증하도록 인증을 업그레이드합니다. 주요 변경 사항은 모두 @auth.authenticate 데코레이터 함수에 있습니다:
- 하드코딩된 토큰 목록과 비교하는 대신 Supabase에 HTTP 요청을 보내 토큰을 검증합니다.
- 검증된 토큰에서 실제 사용자 정보(ID, 이메일)를 추출합니다.
- 기존 리소스 권한 부여 로직은 변경되지 않습니다.
src/security/auth.py를 업데이트합니다:
src/security/auth.py
4. 인증 플로우 테스트
새로운 인증 플로우를 테스트해 보겠습니다. 파일이나 노트북에서 다음 코드를 실행할 수 있습니다. 다음을 제공해야 합니다:/login 요청을 거부합니다.
이제 사용자가 자신의 데이터만 볼 수 있는지 테스트합니다. 계속하기 전에 서버가 실행 중인지 확인하세요(langgraph dev 실행). 다음 스니펫은 이전에 인증 제공자 설정 시 Supabase 대시보드에서 복사한 “anon public” 키가 필요합니다.
- 사용자는 봇에 접근하기 위해 로그인해야 합니다
- 각 사용자는 자신의 스레드만 볼 수 있습니다
다음 단계
LangGraph 애플리케이션을 위한 프로덕션 수준의 인증 시스템을 성공적으로 구축했습니다! 지금까지 달성한 내용을 살펴보겠습니다:- 인증 제공자 설정(이 경우 Supabase)
- 이메일/비밀번호 인증을 사용하는 실제 사용자 계정 추가
- LangGraph 서버에 JWT 토큰 검증 통합
- 사용자가 자신의 데이터만 접근할 수 있도록 적절한 권한 부여 구현
- 다음 인증 과제를 처리할 준비가 된 기반 구축 🚀
- 선호하는 프레임워크로 웹 UI 구축하기(예시는 Custom Auth 템플릿 참조)
- 인증에 대한 개념 가이드에서 인증 및 권한 부여의 다른 측면에 대해 자세히 알아보기
- 참조 문서를 읽고 핸들러와 설정을 추가로 커스터마이징하기
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.