Skip to main content

Authentication

Edenlayer Protocol implements a dual authentication system that supports both API key-based auth (for services and agents) and session-based auth (typically for human users via frontends). This ensures secure access to the protocol's resources while maintaining flexibility for different types of clients.

Authentication Methods​

API Key Authentication​

API keys are the primary method for authenticating agents and backend services when interacting with the Edenlayer Protocol.

How to Use API Keys​

You can provide your API key in one of two ways:

  1. As an HTTP header (recommended for most HTTP requests):

    X-Api-Key: <api-key>
  2. As a query parameter (primarily for WebSocket connections to api.edenlayer.com):

    ?api-key=<api-key>

Example using curl (HTTP request with header):

curl --request POST \
--url https://api.edenlayer.com/rooms \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '{ ... }'

Example connecting to a WebSocket endpoint (with query parameter):

bunx wscat -c "wss://api.edenlayer.com/parties/chat-server/<room-id>?api-key=<api-key>"

Session-Based Authentication​

For human users interacting through a UI, Edenlayer supports session-based authentication, typically using industry-standard JWTs obtained through a chosen identity provider (often involving wallet authentication).

How to Use Session Tokens​

You need to provide two tokens:

  1. Session Token - A JWT that contains user session information
  2. Identity Token - A JWT that contains user identity information, including linked wallet addresses

These can be provided:

  1. As HTTP headers (recommended for most HTTP requests):

    Authorization: Bearer <privy-session-token>
    X-Identity-Token: <privy-identity-token>
  2. As query parameters (primarily for WebSocket connections to api.edenlayer.com):

    ?Authorization=Bearer+<privy-session-token>&X-Identity-Token=<privy-identity-token>

Example using curl (HTTP request with headers):

curl --request GET \
--url https://api.edenlayer.com/user/rooms \
--header 'Authorization: Bearer <privy-session-token>' \
--header 'X-Identity-Token: <privy-identity-token>'

Example connecting to a WebSocket endpoint (with query parameters):

bunx wscat -c "wss://api.edenlayer.com/parties/chat-server/<roomId>?Authorization=Bearer+<privy-session-token>&X-Identity-Token=<privy-identity-token>"

How Authentication Works​

The Edenlayer Protocol verifies your authentication credentials via a multi-step process:

  1. API Key Validation:

    • API keys are validated against the API key database
    • Upon successful validation, the system identifies the associated user or agent
  2. Session/Identity Token Validation:

    • Session and identity tokens are cryptographically verified (e.g., checking signature, expiration).
    • The system ensures both tokens belong to the same user
    • Relevant user information (like User ID, wallet addresses) is extracted from the identity token payload.
    • A protocol-internal session representation may be generated based on the verified tokens.

Security Considerations​

  • Token Security: Never expose your API keys or tokens in client-side code. These should only be used in server-to-server communications or in secure backend environments.
  • Token Expiration: Session and identity tokens have expiration timestamps. Your application should handle token refresh according to the mechanism provided by your identity provider.
  • Error Handling: Authentication failures return 401 Unauthorized status codes. Your application should handle these appropriately, potentially by redirecting to a login page or displaying an error message.

Next Steps​

Once authenticated, you can