Files
monlet/server/monlet_server/agent_auth.py
2026-05-28 14:19:27 +04:00

31 lines
786 B
Python

from dataclasses import dataclass
from hashlib import sha256
from fastapi import Request
@dataclass(frozen=True)
class AgentCredential:
key_hash: str
key_fingerprint: str
def hash_agent_key(token: str) -> str:
return sha256(token.encode("utf-8")).hexdigest()
def fingerprint_from_hash(key_hash: str) -> str:
return key_hash[:16]
def credential_from_token(token: str) -> AgentCredential:
key_hash = hash_agent_key(token)
return AgentCredential(key_hash=key_hash, key_fingerprint=fingerprint_from_hash(key_hash))
def get_agent_credential(request: Request) -> AgentCredential:
cred = getattr(request.state, "agent_credential", None)
if not isinstance(cred, AgentCredential):
raise RuntimeError("agent credential missing")
return cred