core: introduce public auth extension seam

This commit is contained in:
github-ops
2026-05-14 17:03:05 +00:00
parent fd11d9ceca
commit 7f2acdecb9
9 changed files with 68 additions and 32 deletions
+8 -28
View File
@@ -1,36 +1,14 @@
use std::sync::Arc;
use async_trait::async_trait;
use crank_core::{MachineAccessMode, OperationSecurityLevel, PlatformApiKeyScope};
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct VerifiedMachineCredential {
pub machine_access_mode: MachineAccessMode,
pub max_security_level: OperationSecurityLevel,
pub scopes: Vec<PlatformApiKeyScope>,
}
#[async_trait]
pub trait MachineCredentialVerifier: Send + Sync {
async fn verify_bearer_token(
&self,
workspace_slug: &str,
agent_slug: &str,
token: &str,
) -> Result<Option<VerifiedMachineCredential>, MachineCredentialVerifierError>;
}
pub type SharedMachineCredentialVerifier = Arc<dyn MachineCredentialVerifier>;
pub use crank_core::{
MachineCredentialVerifier, MachineCredentialVerifierError, SharedMachineCredentialVerifier,
VerifiedMachineCredential,
};
#[derive(Clone, Default)]
pub struct CommunityMachineCredentialVerifier;
#[derive(Debug, thiserror::Error)]
#[error("machine credential verifier failed")]
pub struct MachineCredentialVerifierError;
pub struct StaticAgentKeyVerifier;
#[async_trait]
impl MachineCredentialVerifier for CommunityMachineCredentialVerifier {
impl MachineCredentialVerifier for StaticAgentKeyVerifier {
async fn verify_bearer_token(
&self,
_workspace_slug: &str,
@@ -40,3 +18,5 @@ impl MachineCredentialVerifier for CommunityMachineCredentialVerifier {
Ok(None)
}
}
pub use StaticAgentKeyVerifier as CommunityMachineCredentialVerifier;