Skip to main content

AZTP (Agentic Zero Trust Protocol) Client Library for Python

Project description

AZTP Client Python

AZTP (Agentic Zero Trust Protocol) Client is an enterprise-grade identity service client that provides secure workload identity management using AZTP standards. The client library facilitates secure communication between workloads by managing digital identities and certificates.

Installation

pip install aztp-client

Requirements

  • Python 3.8 or higher

Quick Start

from aztp_client import Aztp

# Initialize client
client = Aztp(api_key="your-api-key")

# Create a secure agent
agent = await client.secure_connect(name="service1")

# Verify identity
is_valid = await client.verify_identity(agent)

# Verify identity using agent name (multiple methods)
is_valid = await client.verify_identity_using_agent_name(name)
is_valid = await client.verify_identity_using_agent_name(full_aztp_id)
is_valid = await client.verify_identity_using_agent_name(
    name=name,
    trust_domain="aztp.network",
    workload="workload",
    environment="production",
    method="node"
)

# Get identity details
identity = await client.get_identity(agent)

Example

import asyncio
import os
from aztp_client import Aztp
from dotenv import load_dotenv

# Load the .env file from the correct location
load_dotenv()

async def main():
    # Initialize the client with your API key
    client = Aztp(
        api_key= os.getenv("AZTP_API_KEY")
    )
    name = os.getenv("AZTP_AGENT_NAME")
    childNameA = os.getenv("AZTP_CHILD_AGENT_NAME_A")
    childNameB = os.getenv("AZTP_CHILD_AGENT_NAME_B")
    trustDomain = os.getenv("AZTP_TRUST_DOMAIN")

    try:
        crewAgent = {}
        childCrewAgentA = {}
        childCrewAgentB = {}
        
        # Create a secure agent
        print("\nCreating secure agent...")
        agent = await client.secure_connect(
            crewAgent, 
            {
                "agentName": name,
                "isGlobalIdentity": True
            }
        )
        print(f"Agent {name} created successfully!")
        
        if agent.identity.aztp_id:
            print(f"Agent: {agent.identity.aztp_id}")

        #Example 1: Create a child agent with parent identity
        print("\nCreating child agent...")
        childAgentA = await client.secure_connect(
            childCrewAgentA, 
            {
                "agentName": childNameA,
                "parentIdentity": agent.identity.aztp_id,
                "isGlobalIdentity": False
            }
        )
        print(f"Agent {childCrewAgentA} created successfully!")
        if childAgentA.identity.aztp_id:
            print(f"Agent: {childAgentA.identity.aztp_id}")
        
        #Example 2: Create a child agent with parent identity and trust domain
        print("\nCreating child agent with parent identity and trust domain...")
        childAgentB = await client.secure_connect(
            childCrewAgentB, 
            {
                "agentName": childNameB,
                "parentIdentity": agent.identity.aztp_id,
                "trustDomain": trustDomain,
                "isGlobalIdentity": False
            }
        )
        print(f"Agent {childCrewAgentB} created successfully!")
        if childAgentB.identity.aztp_id:
            print(f"Agent: {childAgentB.identity.aztp_id}")

        
        # Verify the identity
        print(f"\nVerifying agent {name} identity...")
        is_valid = await client.verify_identity(agent)
        print(f"Identity valid: {is_valid}")

        # Verify the identity using agent name
        print(f"\nVerifying agent {name} identity using agent name...")
        
        # Example 1: Using just the name (with default parameters)
        print("\n1. Using default parameters:")
        is_valid = await client.verify_identity_using_agent_name(name)
        print(f"Identity valid (defaults): {is_valid}")
        
        # Example 2: Using full AZTP ID
        print("\n2. Using full AZTP ID:")
        full_aztp_id = f"aztp://aztp.network/workload/production/node/{name}"
        is_valid = await client.verify_identity_using_agent_name(full_aztp_id)
        print(f"Identity valid (full ID): {is_valid}")
        
        # Example 3: Using all parameters explicitly
        print("\n3. Using explicit parameters:")
        is_valid = await client.verify_identity_using_agent_name(
            name=name,
            trust_domain="aztp.network",
            workload="workload",
            environment="production",
            method="node"
        )
        print(f"Identity valid (explicit params): {is_valid}")

        
        # Get identity details
        print(f"\nGetting agent {name} identity details...")
        identity = await client.get_identity(agent)
        if identity:
            print(f"Retrieved identity: {identity}")
        else:
            print("No identity found") 

    except ConnectionError as e:
        print(f"Connection Error: Could not connect to the AZTP server. Please check your connection and server URL.")
        print(f"Details: {e}")
    except Exception as e:
        print(f"Error: {str(e)}")
        print("\nCurrent configuration:")
        print(f"Base URL: {client.config.base_url}")
        print(f"Environment: {client.config.environment}")
        print("API Key: ********")  # Don't print the API key for security

if __name__ == "__main__":
    asyncio.run(main())

Features

  • Workload Identity Management using AZTP standards
  • Certificate Management (X.509)
  • Secure Communication
  • Identity Verification
  • Metadata Management
  • Environment-specific Configuration

License

MIT License

Project details


Download files

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

Source Distribution

aztp_client-1.0.9.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

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

aztp_client-1.0.9-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file aztp_client-1.0.9.tar.gz.

File metadata

  • Download URL: aztp_client-1.0.9.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for aztp_client-1.0.9.tar.gz
Algorithm Hash digest
SHA256 0c61a2ff958aaa1be5310c63c27cf8d3547994ebf6002cd1eae1ce410b50a9ab
MD5 f4bb9cbcb3f52a3bcb94fa03708dc193
BLAKE2b-256 e7ab6b764e873d1bdee0a4630055ebfb31f8e4350c09410dc47faab994575974

See more details on using hashes here.

File details

Details for the file aztp_client-1.0.9-py3-none-any.whl.

File metadata

  • Download URL: aztp_client-1.0.9-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for aztp_client-1.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 b015028722e8c2cde97c9501d1190274bac2c670e0bd914289b1ee7b1c05cb52
MD5 d00ec078cfef2df01c2a8426255bdd3a
BLAKE2b-256 b424aca030c17232d7dcf8f7af85f108d7741f074fff7f59bcfdb0b12f6914a9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page