core: introduce public auth extension seam
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user