Expand description
Contains the Authenticator
and UserDetail
traits that are used to extend libunftp’s authentication and user detail storage capabilities.
Pre-made implementations exists on crates.io (search for unftp-auth-
) and you can define your
own implementation to integrate your FTP(S) server with whatever authentication mechanism you
need. For example, to define an Authenticator
that will randomly decide:
- Declare a dependency on the async-trait crate
async-trait = "0.1.50"
- Implement the
Authenticator
trait and optionally theUserDetail
trait:
use libunftp::auth::{Authenticator, AuthenticationError, UserDetail, Credentials};
use async_trait::async_trait;
use unftp_sbe_fs::Filesystem;
#[derive(Debug)]
struct RandomAuthenticator;
#[async_trait]
impl Authenticator<RandomUser> for RandomAuthenticator {
async fn authenticate(&self, _username: &str, _creds: &Credentials) -> Result<RandomUser, AuthenticationError> {
Ok(RandomUser{})
}
}
#[derive(Debug)]
struct RandomUser;
impl UserDetail for RandomUser {}
impl std::fmt::Display for RandomUser {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "RandomUser")
}
}
- Initialize it with the server:
let server = libunftp::Server::with_authenticator(
Box::new(move || { unftp_sbe_fs::Filesystem::new("/srv/ftp") }),
std::sync::Arc::new(RandomAuthenticator{})
);
Re-exports
pub use anonymous::AnonymousAuthenticator;
Modules
- This module provides an anonymous authenticator
Structs
- Contains a single DER-encoded X.509 client certificate.
- Credentials passed to an Authenticator
- DefaultUser is a default implementation of the
UserDetail
trait that doesn’t hold any user information. Having a default implementation like this allows for quicker prototyping with libunftp because otherwise the library user would have to implement theUserDetail
trait first.
Enums
- The error type returned by
Authenticator.authenticate
Traits
- Defines the requirements for Authentication implementations
- UserDetail defines the requirements for implementations that hold Security Subject information for use by the server.