Expand description
§aep-axum
aep-axum provides direct Axum integration for an aep-service Service. It mounts the AEP
discovery and lifecycle routes and provides an extractor for authenticated application resources.
§Install
[dependencies]
aep-axum = "0.2"
aep-service = "0.2"
axum = "0.8"
url = "2.5"§Mount AEP and protect application routes
use std::sync::Arc;
use aep_axum::{AepPrincipal, AuthenticationOptions, authentication_layer, router};
use aep_service::Service;
use axum::{Router, routing::get};
use url::Url;
let protected = Router::new()
.route("/private", get(|principal: AepPrincipal| async move { principal.agent_did.clone() }))
.route_layer(authentication_layer(
service.clone(),
AuthenticationOptions::new(Url::parse("https://service.example")?),
)?);
let application = router(service, 1 << 20)?.merge(protected);The command router honors the Service’s configured endpoint_base. Apply the authentication layer
only to protected application routes. Successful authentication makes AepPrincipal available to
the handler; rejected authentication returns the complete AEP challenge without running it.
See aep-service-axum for a runnable server with every AEP
command, an API-key Grant Type, and a protected application resource.
The underlying aep-service and aep-tower crates remain independently usable. See the
workspace guide and the
AEP specifications.
Structs§
Enums§
Functions§
- authentication_
layer - router
- Mounts the AEP command endpoints of a Service on a new
Router.