pub struct Challenge {
pub scheme: String,
pub token68: Option<String>,
pub params: Vec<(String, String)>,
}Expand description
One parsed challenge from a WWW-Authenticate (or
Proxy-Authenticate) field value, per RFC 9110 §11.3:
challenge = auth-scheme [ 1*SP ( token68 / #auth-param ) ]A challenge is an authentication-scheme name optionally followed by
EITHER a single token68 blob (the base64-ish form used by schemes
like Negotiate / NTLM) OR a comma-separated list of auth-param
name/value pairs (the form used by Basic / Digest, e.g.
realm="…"). The two argument shapes are mutually exclusive within
one challenge, so token68 and
params are never both populated.
Fields§
§scheme: Stringauth-scheme (§11.1) — “a case-insensitive token to identify the
authentication scheme”, lowercased here so Basic / basic
compare equal.
token68: Option<String>The token68 form (§11.2) when the scheme carried a single
base64/base32/base16-style blob instead of auth-params. None
when the challenge had no argument or carried auth-params.
params: Vec<(String, String)>auth-param list (§11.2) as (lowercased-name, decoded-value)
pairs in wire order. Names are matched case-insensitively (§11.2);
values are read through the §5.6.4 quoted-string unwrap when
DQUOTE-wrapped and kept verbatim when in token form (value
case-sensitivity is scheme-specific, so the value case is not
folded). Empty when the challenge had no argument or carried a
token68.