Permit은 RBAC, ABAC, ReBAC와 같은 다양한 모델을 사용하여 세밀하고 실시간 권한 관리를 제공하는 접근 제어 플랫폼입니다. 조직이 애플리케이션 전반에 걸쳐 동적 정책을 적용하여 승인된 사용자만 특정 리소스에 액세스할 수 있도록 보장합니다.

Overview

이 패키지는 Permit을 사용한 JWT 검증 및 권한 확인을 위한 두 가지 LangChain 도구를 제공합니다:
  • LangchainJWTValidationTool: JWKS endpoint에 대해 JWT token을 검증합니다
  • LangchainPermissionsCheckTool: Permit을 사용하여 사용자 권한을 확인합니다

Setup

다음 환경 변수를 설정하세요:
PERMIT_API_KEY=your_permit_api_key
JWKS_URL=your_jwks_endpoint_url
PERMIT_PDP_URL=your_permit_pdp_url  # Usually http://localhost:7766 for local development or your real deployment
PERMIT_PDP_URL에서 PDP(Policy Decision Point)가 실행 중인지 확인하세요. 정책 설정 및 PDP container 실행 방법에 대한 자세한 내용은 Permit docs를 참조하세요.

Credentials

PERMIT_API_KEY=
JWKS_URL=your_jwks_endpoint_url # or your deployed url
PERMIT_PDP_URL=your_pdp_url # or your deployed url
TEST_JWT_TOKEN= # for quick test purposes
최고 수준의 관찰 가능성을 위해 LangSmith를 설정하는 것도 유용합니다(필수는 아님):

Instantiation

JWT Validation Tool

JWT Validation tool은 JWKS(JSON Web Key Set) endpoint에 대해 JWT token을 검증합니다.
from langchain_permit.tools import LangchainJWTValidationTool

# Initialize the tool
jwt_validator = LangchainJWTValidationTool(
    jwks_url=#your url endpoint
)

Configuration Options

다음 중 하나로 도구를 초기화할 수 있습니다:
  • JWKS URL
  • 직접 JWKS JSON 데이터
  • 환경 변수(JWKS_URL)
# Using direct JWKS JSON
jwt_validator = LangchainJWTValidationTool(
    jwks_json={
        "keys": [
            {
                "kid": "key-id",
                "kty": "RSA",
                ...
            }
        ]
    }
)

Permissions Check Tool

Permissions Check tool은 Permit.io와 통합하여 리소스에 대한 사용자 권한을 확인합니다.
from permit import Permit
from langchain_permit.tools import LangchainPermissionsCheckTool

# Initialize Permit client
permit_client = Permit(
    token="your_permit_api_key",
    pdp=# Your PDP URL
)

# Initialize the tool
permissions_checker = LangchainPermissionsCheckTool(
    permit=permit_client
)
이 문서는 두 도구의 주요 기능과 사용 패턴을 보여줍니다.

Invocation

Invoke directly with args

JWT Validation Tool

# Validate a token
async def validate_token():
    claims = await jwt_validator._arun(
        "..."  # Your JWT token
    )
    print("Validated Claims:", claims)

Permissions Check Tool

# Check permissions
async def check_user_permission():
    result = await permissions_checker._arun(
        user={
            "key": "user-123",
            "firstName": "John"
        },
        action="read",
        resource={
            "type": "Document",
            "tenant": "default"
        }
    )
    print("Permission granted:", result)

Input Formats

permissions checker는 다양한 입력 형식을 허용합니다:
  1. 사용자를 위한 간단한 문자열(user key로 변환):
result = await permissions_checker._arun(
    user="user-123",
    action="read",
    resource="Document"
)
  1. 전체 user object:
result = await permissions_checker._arun(
    user={
        "key": "user-123",
        "firstName": "John",
        "lastName": "Doe",
        "email": "[email protected]",
        "attributes": {"department": "IT"}
    },
    action="read",
    resource={
        "type": "Document",
        "key": "doc-123",
        "tenant": "techcorp",
        "attributes": {"confidentiality": "high"}
    }
)

Invoke with ToolCall

(TODO)

Chaining

  • TODO: Add user question and run cells
먼저 tool-calling model에 도구를 바인딩한 다음 호출하여 chain에서 도구를 사용할 수 있습니다:

Additional Demo Scripts

완전히 실행 가능한 데모는 이 repository/langchain_permit/examples/demo_scripts 폴더를 확인하세요. 다음을 찾을 수 있습니다:
  • demo_jwt_validation.py – LangchainJWTValidationTool을 사용하여 JWT를 검증하는 방법을 보여주는 간단한 스크립트입니다.
  • demo_permissions_check.py – LangchainPermissionsCheckTool을 사용하여 Permit.io 권한 확인을 수행하는 스크립트입니다.
환경 변수를 설정한 후 python demo_jwt_validation.py 또는 python demo_permissions_check.py를 실행하여 이러한 도구가 작동하는 것을 확인하세요.

API reference

모든 Permit 기능 및 구성에 대한 자세한 문서는 API reference를 참조하세요: docs.permit.io/
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I