Skip to content

feat(signing): BrandAuthorizationResolver — per-brand agent authorization (Tier 3, gated on ADCP #3690) #350

@bokelley

Description

@bokelley

Summary

Tier 3 of the v3-identity / round-2 SDK roadmap. Net-new on both Python and JS: per-request "is this agent authorized for this brand?" check via brand.json/agents[] array with eTLD+1 binding.

Blocked on adcp#3690 closing — design provisional until spec lands.

Design

Full design lives in the RFC — see docs/proposals/v3-identity-bundle-design.md.

Naming finalized per #346: BrandAuthorizationResolver (not AdagentsResolver).

Surface

  • BrandAuthorizationResolver Protocol with is_authorized(agent_url, brand_domain, agent_type?) method
  • eTLD+1 helper using tldextract (host eTLD+1 must match brand_url eTLD+1)
  • authorized_operators[] delegation logic — host appears in this array for SaaS-as-operator multi-tenancy
  • identity.key_origins.{purpose} consistency check on the verifier
  • Diff #3690's seven new request_signature_* error codes against existing 17
  • Shares _BrandJsonFetcher with Tier 1's BrandJsonJwksResolver (factor out during implementation)

Cross-references

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions