授权决策服务器

一个FastAPI服务器,用于将代理决策请求转发到PingOne授权策略决策端点,适用于需要自动化授权决策的场景。

  • by cjmuir
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 cjmuir/authorize-mcp

使用说明

授权MCP:PingOne授权策略决策服务器

用于将代理决策请求转发到PingOne授权策略决策端点的最小FastAPI服务器。已准备好在Render上部署。

特性

  • /api/authorize-decision -代理请求授权决策的POST端点
  • OAuth2 M2M流使用PingOne客户端凭据(client_secret_basic)
  • 通过环境变量获取所有PingOne参数(部署安全)

快速入门(本地)

  1. 克隆仓库
  2. 安装依赖项:
    pip install -r requirements.txt
    
  3. 设置环境变量:
    • 导出变量或使用平台的环境变量设置
  4. 启动服务器:
    uvicorn main:app --host 0.0.0.0 --port 10000
    

部署以渲染

  1. 推送到Github
  2. 渲染时:
    • 从您的仓库创建新的Web服务
    • 启动命令: uvicorn main:app --host 0.0.0.0 --port $PORT
    • 设置环境变量
  3. 部署!

环境变量

  • PINGONE_CLIENT_ID -工作应用程序客户端ID
  • PINGONE_CLIENT_SECRET -Worker应用程序客户端密码
  • PINGONE_ENV_ID -PingOne环境ID(用于令牌URL和评估路径)
  • PINGONE_DECISION_ENDPOINT_ID -决策端点ID(首选)
  • PINGONE_DECISION_ID -返回同胞别名;如果未设置端点ID,则使用
  • PINGONE_AUTH_BASE -授权基本域(默认值: https://auth.pingone.com)
  • PINGONE_TOKEN_URL -可选显式令牌URL;如果省略,服务器将使用 {PINGONE_AUTH_BASE}/{PINGONE_ENV_ID}/as/token
  • PINGONE_API_BASE -API基础(默认值: https://api.pingone.com/v1)

标记和评估URL

  • 令牌(如果 PINGONE_TOKEN_URL 未设置):
{PINGONE_AUTH_BASE}/{PINGONE_ENV_ID}/as/token
  • 评估:
{PINGONE_API_BASE}/environments/{PINGONE_ENV_ID}/decisionEndpoints/{PINGONE_DECISION_ENDPOINT_ID}/evaluate

有关详细信息,请参阅PingOne文档:评估决策请求 (https://apidocs.pingidentity.com/pingone/authorize/v1/api/#post-评估-决策请求)

MCP协议集成

此服务器实现了用于自动代理工具发现的模型上下文协议(MCP)。

MCP端点

  • 统一资源定位符: https://authorize-mcp.onrender.com/mcp
  • 协议:基于HTTP的JSON-RPC 2.0

可用的MCP方法

  1. initialize -初始化MCP连接

    {
      "jsonrpc": "2.0",
      "id": 1,
      "method": "initialize",
      "params": {}
    }
    
  2. tools/list -列出可用工具

    {
      "jsonrpc": "2.0",
      "id": 2,
      "method": "tools/list",
      "params": {}
    }
    
  3. tools/call -执行工具

    {
      "jsonrpc": "2.0",
      "id": 3,
      "method": "tools/call",
      "params": {
        "name": "evaluate_authorization_decision",
        "arguments": {
          "user_id": "189d1ef5-676d-493f-b65a-39586024083e",
          "policy_request": "payment",
          "parameters": {
            "Request - Payment.paymentAmount": "3000",
            "Request - Payment.creditorName": "Customer2987",
            "Request - Payment.consentId": "test-consent"
          }
        }
      }
    }
    

工具: evaluate_authorization_decision

使用PingOne授权策略决策服务评估授权决策。

论据:

  • user_id (必填):PingOne用户ID
  • policy_request (可选):请求类型(默认:“付款”)
  • parameters (可选):策略特定参数对象

示例响应:

{
  "jsonrpc": "2.0",
  "id": 3,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Authorization Decision: PERMIT\n✓ The request is authorized.\n\nFull response: {...}"
      }
    ],
    "isError": false
  }
}

代理集成

对于与此MCP服务器集成的AI代理:

  • 连接到 /mcp 使用JSON-RPC 2.0的端点
  • 呼叫 initialize 第一
  • 使用 tools/list 发现 evaluate_authorization_decision 工具
  • 呼叫 tools/call 有适当的论据

看 AGENT_PROMPT.md 有关从自然语言查询构造请求的详细说明。

传统HTTP API

这 /api/authorize-decision 端点仍然可用于向后兼容性。