Expand description

HTTP authentication. Currently meant for clients; to be extended for servers.

As described in the following documents and specifications:

This framework is primarily used with HTTP, as suggested by the name. It is also used by some other protocols such as RTSP.

Cargo Features

featuredefault?description
basic-schemeyessupport for the Basic auth scheme
digest-schemeyessupport for the Digest auth scheme
httpnoconvenient conversion from http crate types

Example

In most cases, callers only need to use PasswordClient and PasswordParams to handle Basic and Digest authentication schemes.

use std::convert::TryFrom as _;
use http_auth::PasswordClient;

let WWW_AUTHENTICATE_VAL = "UnsupportedSchemeA, Basic realm=\"foo\", UnsupportedSchemeB";
let mut pw_client = http_auth::PasswordClient::try_from(WWW_AUTHENTICATE_VAL).unwrap();
assert!(matches!(pw_client, http_auth::PasswordClient::Basic(_)));
let response = pw_client.respond(&http_auth::PasswordParams {
    username: "Aladdin",
    password: "open sesame",
    uri: "/",
    method: "GET",
    body: Some(&[]),
}).unwrap();
assert_eq!(response, "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");

The http feature allows parsing all WWW-Authenticate headers within a http::HeaderMap in one call.

use http::header::{HeaderMap, WWW_AUTHENTICATE};

let mut headers = HeaderMap::new();
headers.append(WWW_AUTHENTICATE, "UnsupportedSchemeA".parse().unwrap());
headers.append(WWW_AUTHENTICATE, "Basic realm=\"foo\", UnsupportedSchemeB".parse().unwrap());

let mut pw_client = PasswordClient::try_from(headers.get_all(WWW_AUTHENTICATE)).unwrap();
assert!(matches!(pw_client, http_auth::PasswordClient::Basic(_)));

Re-exports

pub use parser::ChallengeParser;
pub use crate::basic::BasicClient;
pub use crate::digest::DigestClient;

Modules

basicbasic-scheme

Basic authentication scheme as in RFC 7617.

digestdigest-scheme

Digest authentication scheme, as in RFC 7616.

Parses as in RFC 7235.

Structs

Parsed challenge (scheme and body) using references to the original header value. Produced by crate::parser::ChallengeParser.

Parsed challenge parameter value used within ChallengeRef.

Builds a PasswordClient from the supplied challenges; create via PasswordClient::builder.

Parameters for responding to a password challenge.

Enums

Client for responding to a password challenge.

Functions

Parses a list of challenges into a Vec.