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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c61a2ff958aaa1be5310c63c27cf8d3547994ebf6002cd1eae1ce410b50a9ab
|
|
| MD5 |
f4bb9cbcb3f52a3bcb94fa03708dc193
|
|
| BLAKE2b-256 |
e7ab6b764e873d1bdee0a4630055ebfb31f8e4350c09410dc47faab994575974
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b015028722e8c2cde97c9501d1190274bac2c670e0bd914289b1ee7b1c05cb52
|
|
| MD5 |
d00ec078cfef2df01c2a8426255bdd3a
|
|
| BLAKE2b-256 |
b424aca030c17232d7dcf8f7af85f108d7741f074fff7f59bcfdb0b12f6914a9
|