Skip to main content

Prokura

One current authority for delegated access.

Prokura gives every agent, automation, and connected application its own delegated-access card. The card records whose authority the caller uses, which resources and operations it may reach, which connected accounts it may use, and when that authority expires. A service resolves the current card and current capability catalog at the operation boundary, so an edit or revocation applies to the next call.

The name comes from the commercial-law institution in which delegated signing authority lives in a register. A third party checks the register rather than a letter carried by the delegate. Prokura applies that model to software callers.

Install

python -m pip install prokura

0.0.2 is an alpha release. It contains the portable implementation used by the Connection Hub application in this repository:

  • versioned delegated cards and capability catalogs;
  • live card/catalog admission for managed REST, MCP, and named-service calls;
  • delegated OAuth client and connected-account policy contracts;
  • structured, actionable denial results;
  • direct protected-service admission with an opaque delegated bearer and an independent replay-protected workload proof;
  • explicit host ports for storage, identity, dispatch, secrets, and live delivery.

The currently runnable product is the KDCube-hosted connection-hub@1-0 application. Prokura owns authority semantics; the host supplies authenticated sessions, storage, secret resolution, Redis protocol state, and HTTP surfaces.

Direct Protected-Service Admission

An external backend can accept a user's opaque delegated bearer and ask the Connection Hub for a live decision about one concrete operation. The backend also signs the request with its own registered workload secret; possession of the user bearer alone is not service identity.

import secrets
import time

from prokura.delegated_credentials.admission import (
    AdmissionRequest,
    sign_admission_request,
)

request = AdmissionRequest(
    resource="https://api.example.test/customers",
    operation="customers.search",
)
timestamp = str(int(time.time()))
nonce = secrets.token_urlsafe(24)
signature = sign_admission_request(
    secret=service_signing_secret,
    service_id="crm-api",
    timestamp=timestamp,
    nonce=nonce,
    delegated_token=user_delegated_bearer,
    request=request,
)

The service sends the semantic request body and the four X-Prokura-* proof headers to the configured Connection Hub admission endpoint, with the opaque delegated bearer in Authorization: Bearer .... An allow response contains a service-scoped subject and only the bounded authority relevant to that operation. It never returns provider credentials or the platform's internal user id.

See the runnable direct-admission-service and the deployment recipe.

Integration Boundaries

  • The service registry authenticates workloads and binds each service to resource selectors. It does not duplicate the operation/grant catalog.
  • Every decision intersects the delegated bearer with the current card and active catalog. A cached allow is not an authority source.
  • Connected-account credential resolution is a separate trusted operation; direct admission does not export provider secrets.
  • A protected backend still applies its own domain authorization after Prokura admission.

Documentation

License: MIT. Source: https://github.com/elenaviter/app-ecosystem

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prokura-0.0.2.tar.gz (261.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

prokura-0.0.2-py3-none-any.whl (288.3 kB view details)

Uploaded Python 3

File details

Details for the file prokura-0.0.2.tar.gz.

File metadata

  • Download URL: prokura-0.0.2.tar.gz
  • Upload date:
  • Size: 261.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.6

File hashes

Hashes for prokura-0.0.2.tar.gz
Algorithm Hash digest
SHA256 8d34a3abe685934477432245d73bd859c2f5ff234d1e0be110c68cda6ce041f8
MD5 46daccafed002eefa8384cadcf4e752c
BLAKE2b-256 c6ba691ed8c603b6ba4b4a6f82ad680e1eb548d8f438f74132557d54efb82eba

See more details on using hashes here.

File details

Details for the file prokura-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: prokura-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 288.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.6

File hashes

Hashes for prokura-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f51b7e74a5e2a7d04c142267004bf7756f5fd036525dff3173e34bf7ade0ab8b
MD5 8adfa2799d895c9b7db4d071ff88ea68
BLAKE2b-256 45849602d93c440b846599b281120c8b8d3e377df65ed2575d908d131a8174da

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page