Expand description
Security infrastructure for systemprompt.io.
Houses the request-level authentication primitives shared by the HTTP API and the runtime layer:
- Asymmetric signing key plane (
keys) — the in-processTokenAuthorityholds the active RSA keypair, exposes the public set for/.well-known/jwks.json, and caches federated JWKS documents under a bounded LRU with an HTTPS allowlist. - JWT minting (
jwt) for admin tokens and (session) for session-scoped tokens. Tokens are signed RS256 viaTokenAuthorityand carry akidheader; HS256 is rejected on validation. - Token extraction (
extraction) fromAuthorizationheaders, MCP proxy headers, and cookies. - Request validation (
auth) that turns those tokens into asystemprompt_models::execution::context::RequestContext, resolving non-self-issued tokens againstprofile.security.trusted_issuersand propagating the RFC 8693act_chainonto the per-request context. - At-rest hashing (
at_rest) —hmac_sha256/hmac_sha256_hexunder the deploymentoauth_at_rest_pepper, used to store refresh-token ids and authorisation codes as digests rather than plaintext. - Bridge manifest signing (
manifest_signing) with Ed25519 keys. - Lightweight scanner / bot detection (
services). - Authorization decision plane (
authz) — deny-overrides resolver,access_control_rulesrepository, andAuthzDecisionHookextension surface shared by the gateway and MCP enforcement sites.
All public fallible APIs return typed errors from error — anyhow
is not used in any public signature.
§Feature flags
This crate has no Cargo features; everything compiles by default.
§Example
use systemprompt_models::auth::JwtAudience;
use systemprompt_security::AuthValidationService;
let svc = AuthValidationService::new("systemprompt.io".to_string(), JwtAudience::standard());
let _ctx = svc.validate_request(headers)?;Re-exports§
pub use at_rest::hmac_sha256;pub use at_rest::hmac_sha256_hex;pub use auth::AuthValidationService;pub use auth::HookTokenValidator;pub use auth::ValidatedHookClaims;pub use authz::CompositeAuthzHook;pub use error::AuthError;pub use error::AuthResult;pub use error::JwtError;pub use error::JwtResult;pub use error::ManifestSigningError;pub use error::ManifestSigningResult;pub use extraction::CookieExtractionError;pub use extraction::CookieExtractor;pub use extraction::ExtractionMethod;pub use extraction::HeaderExtractor;pub use extraction::HeaderInjectionError;pub use extraction::HeaderInjector;pub use extraction::TokenExtractionError;pub use extraction::TokenExtractor;pub use jwt::AdminTokenParams;pub use jwt::JwtService;pub use jwt::JwtUserContext;pub use jwt::extract_user_context;pub use services::ScannerDetector;pub use session::SessionGenerator;pub use session::SessionParams;pub use session::ValidatedSessionClaims;
Modules§
- at_rest
- At-rest hashing for secrets that must be looked up by exact match but must not survive a database read.
- auth
- Request validation: turns an
axum::http::HeaderMapinto asystemprompt_models::execution::context::RequestContextusing a configured JWT secret, issuer, and audience set. - authz
- Unified authorization decision plane.
- error
- Error types raised by the security infrastructure.
- extraction
- Token extraction from inbound HTTP requests and id-header injection.
- jwt
- JWT plane.
- keys
- RSA signing-key infrastructure for systemprompt.io’s federated JWT plane.
- manifest_
signing - Ed25519 signing of bridge manifests.
- policy
- Unified tool-use governance plane.
- services
- Stateless security services that don’t fit elsewhere — currently the
ScannerDetector. - session
- Session-scoped JWT minting and the validated-claims wrapper produced
by
crate::auth::AuthValidationService.
Macros§
- register_
authz_ hook - Register an extension authz hook factory at static-init time.