Overview
AdCP operates in a high-stakes environment where:- Financial transactions involve real advertising spend
- Multi-party trust requires coordination between Principals, Publishers, and Orchestrators
- Sensitive data includes first-party signals, pre-launch creatives, and competitive targeting strategies
- Asynchronous operations span multiple systems and protocols
Risk Classification
High-Risk Operations (Financial)
These operations commit real advertising budgets:
Requirements:
- Short-lived credentials (tokens expiring in ≤15 minutes)
- Request signing for transaction integrity
- Multi-factor authentication or approval workflows for large budgets
- Full audit trail with immutable logging
Medium-Risk Operations (Data Access)
These operations access sensitive business data:Low-Risk Operations (Discovery)
These operations are publicly accessible:Webhook Security
Signature Verification
Always verify webhook authenticity:Replay Attack Prevention
Use timestamps and event IDs to prevent replay attacks:Authentication Best Practices
Credential Storage
Token Expiration
Use short-lived tokens for high-risk operations:Principal Isolation
Multi-Tenant Security
Orchestrators managing multiple principals must enforce strict isolation:Row-Level Security
Implement row-level security in your database:Financial Transaction Safety
Idempotency
All state-changing operations must support idempotency:Budget Validation
Validate budgets before committing:Transport Security
HTTPS Requirements
- All AdCP communications must use HTTPS with TLS 1.3+ (TLS 1.2 minimum)
- Validate SSL certificates (no self-signed certificates in production)
- Implement HTTP Strict Transport Security (HSTS) headers
Input Validation
Request Validation
Validate all user-provided input:SQL Injection Prevention
Always use parameterized queries:Audit Logging
Required Log Events
Log all security-relevant events:Log Retention
- Security logs: 90 days minimum (365 days recommended)
- Financial logs: 7 years (compliance requirement)
- Access logs: 30 days minimum
Security Checklist
For Publishers (AdCP Servers)
- Implement strong authentication (OAuth 2.0, API keys, or mTLS)
- Enforce principal isolation in all database queries
- Implement idempotency for financial operations
- Validate all input with strict schema validation
- Use TLS 1.3+ for all communications
- Verify webhook signatures cryptographically
- Log all security events immutably
For Principals (AdCP Clients)
- Store credentials in secure key management system
- Rotate credentials every 90 days
- Use HTTPS for all AdCP communications
- Validate responses from publishers
- Implement alerts for unusual spending patterns
For Orchestrators (Multi-Principal Agents)
- Store each principal’s credentials separately (encrypted)
- Enforce principal_id filtering in ALL queries
- Use row-level security in databases
- Log all operations with principal identity
- Implement per-principal rate limiting
Next Steps
- Webhooks: See Webhooks for webhook security patterns
- Error Handling: See Error Handling for authentication errors
- Orchestrator Design: See Orchestrator Design for multi-tenant security