Note: Currently only supports basic username/password authentication out-of-the-box.
Environment support through the env
module is probably broken and should not be used in the current state!
- Add
pam
to your Cargo.toml:
[dependencies]
pam = "0.7.0"
- Use the
Authenticator
struct to authenticate and open a session
extern crate pam;
pub fn main() {
let service = "<yourapp>";
let user = "<user>";
let password = "<pass>";
let mut auth = pam::Authenticator::with_password(service).unwrap();
auth.handler_mut().set_credentials(user, password);
if auth.authenticate().is_ok() && auth.open_session().is_ok() {
println!("Successfully opened a session!");
}
else {
println!("Authentication failed =/");
}
}
- Implement basic user/password authentication
- Add
Authenticator
struct - Add (more) documentation
- Verify current
conv
does not leak memory - Allow custom
conv
functions to be passed - Code cleanup
The library is only continuously built against Rust stable, beta and nightly but as it does not use a lot of new language features it should probably compile on older versions as well. If you encounter problems building on older versions and a small fix can be applied to make the build succeed, consider opening a pull request.
This crate follows semantic versioning. As such all versions below 1.0.0
should be
considered development versions. This means the API could change any time.
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.