pub struct AuthorizationHeader {
pub realm: String,
pub nonce: String,
pub opaque: Option<String>,
pub userhash: bool,
pub algorithm: Algorithm,
pub response: String,
pub username: String,
pub uri: String,
pub qop: Option<Qop>,
pub cnonce: Option<String>,
pub nc: u32,
}
Expand description
Header sent back to the server, including password hashes.
This can be obtained by calling AuthorizationHeader::from_prompt()
,
or from the WwwAuthenticateHeader
prompt struct
with .respond()
Fields§
§realm: String
Authorization realm
nonce: String
Server nonce
opaque: Option<String>
Server opaque
userhash: bool
Flag that userhash was used
algorithm: Algorithm
Hash algorithm
response: String
Computed digest
username: String
Username or hash (owned because of the computed hash)
uri: String
Requested URI
qop: Option<Qop>
QOP chosen from the list offered by server, if any None in legacy compat mode (RFC 2069)
cnonce: Option<String>
Client nonce None in legacy compat mode (RFC 2069)
nc: u32
How many requests have been signed with this server nonce Not used in legacy compat mode (RFC 2069) - it’s still incremented though
Implementations§
Source§impl AuthorizationHeader
impl AuthorizationHeader
Sourcepub fn from_prompt(
prompt: &mut WwwAuthenticateHeader,
context: &AuthContext<'_>,
) -> Result<AuthorizationHeader>
pub fn from_prompt( prompt: &mut WwwAuthenticateHeader, context: &AuthContext<'_>, ) -> Result<AuthorizationHeader>
Construct using a parsed prompt header and an auth context, selecting suitable algorithm
options. The WwwAuthenticateHeader
struct contains a
nc
field that is incremented by this
method.
For subsequent requests, simply reuse the same WwwAuthenticateHeader
and - if the server supports nonce reuse - it will work automatically.
§Errors
Fails if the source header is malformed so much that we can’t figure out a proper response (e.g. given but invalid QOP options)
Sourcepub fn digest(&mut self, context: &AuthContext<'_>)
pub fn digest(&mut self, context: &AuthContext<'_>)
Build the response digest from Auth Context.
This function is used by client to fill the Authorization header. It can be used by server using a known password to replicate the hash and then compare “response”.
This function sets cnonce if it was None before, or reuses it.
Fields updated in the Authorization header:
- qop (if it was auth-int before but no body was given in context)
- cnonce (if it was None before)
- username copied from context
- response
Sourcepub fn to_header_string(&self) -> String
pub fn to_header_string(&self) -> String
Produce a header string (also accessible through the Display trait)
Trait Implementations§
Source§impl Clone for AuthorizationHeader
impl Clone for AuthorizationHeader
Source§fn clone(&self) -> AuthorizationHeader
fn clone(&self) -> AuthorizationHeader
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for AuthorizationHeader
impl Debug for AuthorizationHeader
Source§impl Display for AuthorizationHeader
impl Display for AuthorizationHeader
Source§impl FromStr for AuthorizationHeader
impl FromStr for AuthorizationHeader
Source§impl PartialEq for AuthorizationHeader
impl PartialEq for AuthorizationHeader
impl StructuralPartialEq for AuthorizationHeader
Auto Trait Implementations§
impl Freeze for AuthorizationHeader
impl RefUnwindSafe for AuthorizationHeader
impl Send for AuthorizationHeader
impl Sync for AuthorizationHeader
impl Unpin for AuthorizationHeader
impl UnwindSafe for AuthorizationHeader
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 176 bytes