Skip to main content
Agent Auth는 베타 버전이며 활발히 개발 중입니다. 피드백을 제공하거나 이 기능을 사용하려면 LangChain 팀에 문의하세요.

설치

PyPI에서 Agent Auth 클라이언트 라이브러리를 설치합니다:
pip install langchain-auth

빠른 시작

1. 클라이언트 초기화

from langchain_auth import Client

client = Client(api_key="your-langsmith-api-key")

2. OAuth 공급자 설정

에이전트가 인증하기 전에 다음 프로세스를 사용하여 OAuth 공급자를 구성해야 합니다:
  1. LangChain 플랫폼에서 사용할 OAuth 공급자의 고유 식별자를 선택합니다(예: “github-local-dev”, “google-workspace-prod”).
  2. OAuth 공급자의 개발자 콘솔로 이동하여 새 OAuth 애플리케이션을 생성합니다.
  3. 다음 구조를 사용하여 LangChain의 API를 사용 가능한 콜백 URL로 설정합니다:
    https://api.host.langchain.com/v2/auth/callback/{provider_id}
    
    예를 들어 provider_id가 “github-local-dev”인 경우 다음을 사용합니다:
    https://api.host.langchain.com/v2/auth/callback/github-local-dev
    
  4. OAuth 앱의 자격 증명과 함께 client.create_oauth_provider()를 사용합니다:
new_provider = await client.create_oauth_provider(
    provider_id="{provider_id}", # 고유한 ID를 제공합니다. 공급자와 공식적으로 연결되지 않습니다.
    name="{provider_display_name}", # 표시 이름을 제공합니다
    client_id="{your_client_id}",
    client_secret="{your_client_secret}",
    auth_url="{auth_url_of_your_provider}",
    token_url="{token_url_of_your_provider}",
)

3. 에이전트에서 인증

클라이언트 authenticate() API는 미리 구성된 공급자로부터 OAuth 토큰을 가져오는 데 사용됩니다. 첫 번째 호출 시 호출자를 OAuth 2.0 인증 플로우로 안내합니다.

LangGraph 컨텍스트에서

기본적으로 토큰은 Assistant ID 매개변수를 사용하여 호출 에이전트로 범위가 지정됩니다.
auth_result = await client.authenticate(
    provider="{provider_id}",
    scopes=["scopeA"],
    user_id="your_user_id" # 이 토큰을 사람 호출자로 범위를 지정하는 고유 식별자
)

# 또는 모든 에이전트가 사용할 수 있는 토큰을 원하는 경우 agent_scoped=False로 설정합니다
auth_result = await client.authenticate(
    provider="{provider_id}",
    scopes=["scopeA"],
    user_id="your_user_id",
    agent_scoped=False
)
실행 중에 인증이 필요한 경우 SDK는 interrupt를 발생시킵니다. 에이전트 실행이 일시 중지되고 사용자에게 OAuth URL을 표시합니다: Studio interrupt showing OAuth URL 사용자가 OAuth 인증을 완료하고 공급자로부터 콜백을 받으면 인증 성공 페이지가 표시됩니다. GitHub OAuth success page 그런 다음 에이전트는 중단된 지점부터 실행을 재개하며, 토큰은 모든 API 호출에 사용할 수 있습니다. OAuth 토큰을 저장하고 갱신하므로 사용자나 에이전트가 향후 서비스를 사용할 때 OAuth 플로우가 필요하지 않습니다.
token = auth_result.token

LangGraph 컨텍스트 외부

대역 외 OAuth 플로우를 위해 사용자에게 auth_url을 제공합니다.
# 기본값: 사용자 범위 토큰(이 사용자의 모든 에이전트에서 작동)
auth_result = await client.authenticate(
    provider="{provider_id}",
    scopes=["scopeA"],
    user_id="your_user_id"
)

if auth_result.needs_auth:
    print(f"다음에서 OAuth를 완료하세요: {auth_result.auth_url}")
    # 완료 대기
    completed_auth = await client.wait_for_completion(auth_result.auth_id)
    token = completed_auth.token
else:
    token = auth_result.token

Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I