[][src]Module libunftp::auth

Contains the Authenticator and UserDetails traits that are used by various implementations and also the Server to authenticate users.

Defines the common interface that can be implemented for a multitude of authentication backends, e.g. LDAP or PAM. It is used by Server to authenticate users.

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:

  1. Declare a dependency on the async-trait crate
async-trait = "0.1.40"
  1. Implement the Authenticator trait and optionally the UserDetail trait:
use libunftp::auth::{Authenticator, AuthenticationError, UserDetail};
use async_trait::async_trait;

#[derive(Debug)]
struct RandomAuthenticator;

#[async_trait]
impl Authenticator<RandomUser> for RandomAuthenticator {
    async fn authenticate(&self, _username: &str, _password: &str) -> 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")
    }
}
  1. Initialize it with the server:
let server = libunftp::Server::with_fs_and_auth(
  "/srv/ftp",
  std::sync::Arc::new(RandomAuthenticator{})
);

Re-exports

pub use anonymous::AnonymousAuthenticator;

Modules

anonymous

This module provides an anonymous authenticator

jsonfile

Authenticator implementation that authenticates against a JSON file.

pam

Authenticator implementation that authenticates against PAM.

rest

Authenticator implementation that authenticates against a JSON REST API.

Structs

DefaultUser

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

AuthenticationError

The error type returned by Authenticator.authenticate

Traits

Authenticator

Defines the requirements for Authentication implementations

UserDetail

UserDetail defines the requirements for implementations that hold Security Subject information for use by the server.