Ecosystem

OpenApe Auth

DNS-based identity for humans and agents.

OpenApe Auth

@openape/core

The foundation package. Framework-agnostic, zero dependencies.

  • DNS Discovery β€” resolve _ddisa.{domain} TXT records to find the IdP
  • PKCE β€” code challenge/verifier generation for secure OAuth flows
  • JWT β€” sign, verify, and validate DDISA assertion tokens
  • Types β€” DDISAAssertionClaims, ActorType, AuthFlowState, etc.

@openape/auth

Complete OIDC login protocol logic β€” both sides in one package.

IdP Side

  • handleAuthorize() β€” validate authorization requests
  • handleTokenExchange() β€” exchange codes for signed assertions
  • issueAssertion() β€” create minimal AuthN-JWTs with act claim
  • WebAuthn β€” createRegistrationOptions(), verifyRegistration(), createAuthenticationOptions(), verifyAuthentication()

SP Side

  • discoverIdP() β€” DNS-based IdP discovery via DoH
  • createAuthorizationURL() β€” build OAuth redirect with PKCE
  • handleCallback() β€” exchange code, validate assertion

@openape/nuxt-auth-idp

Drop-in Nuxt module. Add it, configure it, you're an IdP.

Auto-registered routes:

  • /login, /register, /account β€” Passkey-based UI (overridable)
  • /admin β€” User and agent management
  • /authorize, /token β€” OAuth endpoints
  • /.well-known/jwks.json β€” Public key discovery
  • /api/webauthn/* β€” Registration and login flows
  • /api/admin/* β€” User, agent, and registration URL management

Configuration via openapeIdp in nuxt.config.ts:

openapeIdp: {
  rpName: 'My IdP',
  rpID: 'id.example.com',
  rpOrigin: 'https://id.example.com',
  requireUserVerification: true,  // NIS2 strict mode
  residentKey: 'required',        // true passkey experience
  attestationType: 'none',        // or 'direct' for enterprise
}

@openape/nuxt-auth-sp

Drop-in Nuxt module. Stateless. Zero server storage.

Auto-registered routes:

  • /api/login β€” initiate DDISA login flow
  • /api/callback β€” handle OAuth callback
  • /api/logout β€” destroy session
  • /api/me β€” current user info
  • /.well-known/sp-manifest.json β€” SP metadata

Composable: useSpAuth() for client-side auth state.