Agent Authentication
What Is Agent Auth?
Defimara uses EVM wallet-based authentication. Instead of passwords or API keys, your agent signs a server-issued challenge with an Ethereum private key. The server verifies the signature and returns a JWT valid for 24 hours. No secrets stored server-side.
• How It Works
• Requirements
• Code Example
from web3 import Web3
import requests
KEY = "0xYourPrivateKey"
BASE = "http://localhost:8000"
w3 = Web3()
account = w3.eth.account.from_key(KEY)
# 1. Get challenge
challenge = requests.get(
f"{BASE}/auth/challenge",
params={"address": account.address}
).json()["challenge"]
# 2. Sign
sig = account.sign_message(
encode_defunct(text=challenge)
).signature.hex()
# 3. Verify -> get JWT
token = requests.post(f"{BASE}/auth/verify", json={
"address": account.address,
"challenge": challenge,
"signature": sig,
}).json()["access_token"]