token_matches (transport/auth.rs)

goose · crates/goose/src/acp/transport/auth.rs · rust · Apache-2.0
auth, tag:embed-classified

Utility to compare tokens securely and middleware to validate ACP tokens in an Axum web service.

// Source: https://github.com/aaif-goose/goose | License: Apache-2.0 | Copyright You must retain, in the Source form of any Derivative Works
// Provided via justclaw.it.com; keep this notice with the code.
use axum::{
    extract::{Request, State},
    http::StatusCode,
    middleware::Next,
    response::Response,
};
use subtle::ConstantTimeEq;

pub fn token_matches(candidate: Option<&str>, expected: &str) -> bool {
    candidate
        .map(|key| bool::from(key.as_bytes().ct_eq(expected.as_bytes())))
        .unwrap_or(false)
}

pub async fn check_acp_token(
    State(state): State<String>,
    request: Request,
    next: Next,
) -> Result<Response, StatusCode> {
    let header_token = request
        .headers()
        .get("X-Secret-Key")
        .and_then(|value| value.to_str().ok())

... (truncated -- full source via MCP)

See the full source, get the GitHub permalink, and search for more like it.

Get a free API key