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 the UserDetail
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.