Permit
Permit 是一個存取控制平台,提供細緻、即時的權限管理,使用各種模型,例如 RBAC、ABAC 和 ReBAC。它使組織能夠在其應用程式中強制執行動態政策,確保只有授權使用者才能存取特定資源。
概觀
此套件提供兩個 Langchain 工具,用於 JWT 驗證和使用 Permit 檢查權限
-
LangchainJWTValidationTool:根據 JWKS 端點驗證 JWT 令牌
-
LangchainPermissionsCheckTool:使用 Permit 檢查使用者權限
設定
設定以下環境變數
PERMIT_API_KEY=your_permit_api_key
JWKS_URL=your_jwks_endpoint_url
PERMIT_PDP_URL=your_permit_pdp_url # Usually https://127.0.0.1:7766 for local development or your real deployment
確保您的 PDP (策略決策點) 正在 PERMIT_PDP_URL 上執行。請參閱 Permit 文件,以瞭解有關策略設定以及如何啟動 PDP 容器的詳細資訊。
憑證
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 也很有幫助 (但非必要),以獲得最佳的可觀察性
實例化
JWT 驗證工具
JWT 驗證工具會根據 JWKS (JSON Web Key Set) 端點驗證 JWT 令牌。
from langchain_permit.tools import LangchainJWTValidationTool
# Initialize the tool
jwt_validator = LangchainJWTValidationTool(
jwks_url=#your url endpoint
)
組態選項
您可以使用以下任一項初始化工具:
- JWKS URL
- 直接 JWKS JSON 資料
- 環境變數 (JWKS_URL)
# Using direct JWKS JSON
jwt_validator = LangchainJWTValidationTool(
jwks_json={
"keys": [
{
"kid": "key-id",
"kty": "RSA",
...
}
]
}
)
權限檢查工具
權限檢查工具與 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
)
本文件示範了這兩種工具的關鍵功能和使用模式。
調用
使用參數直接調用
JWT 驗證工具
# Validate a token
async def validate_token():
claims = await jwt_validator._arun(
"..." # Your JWT token
)
print("Validated Claims:", claims)
權限檢查工具
# 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)
輸入格式
權限檢查器接受不同的輸入格式
- 使用者的簡單字串 (轉換為使用者金鑰)
result = await permissions_checker._arun(
user="user-123",
action="read",
resource="Document"
)
- 完整使用者物件
result = await permissions_checker._arun(
user={
"key": "user-123",
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com",
"attributes": {"department": "IT"}
},
action="read",
resource={
"type": "Document",
"key": "doc-123",
"tenant": "techcorp",
"attributes": {"confidentiality": "high"}
}
)
使用 ToolCall 調用
(待辦事項)
鏈結
- 待辦事項:新增使用者問題並執行儲存格
我們可以透過先將工具繫結到 工具呼叫模型,然後呼叫它,在鏈結中使用我們的工具
pip install -qU "langchain[openai]"
import getpass
import os
if not os.environ.get("OPENAI_API_KEY"):
os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter API key for OpenAI: ")
from langchain.chat_models import init_chat_model
llm = init_chat_model("gpt-4o-mini", model_provider="openai")
其他示範腳本
如需完全可執行的示範,請查看此儲存庫中的 /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 參考
如需所有 Permit 功能和組態的詳細文件,請前往 API 參考:https://docs.permit.io/