HTTP-4000.2.17: A library for client-side HTTP

Portability | non-portable (not tested)
Stability | experimental
Maintainer | Ganesh Sittampalam <ganesh@earth.li>
Safe Haskell | None

Network.HTTP.Auth

Description

Representing HTTP Auth values in Haskell. Right now, it contains mostly functionality needed by `Browser`.

Synopsis

- data Authority
  - = AuthBasic {
    - auRealm :: String
    - auUsername :: String
    - auPassword :: String
    - auSite :: URI
    }
  - | AuthDigest {
    - auRealm :: String
    - auUsername :: String
    - auPassword :: String
    - auNonce :: String
    - auAlgorithm :: Maybe Algorithm
    - auDomain :: [URI]
    - auOpaque :: Maybe String
    - auQop :: [Qop]
    }
- data Algorithm
  - = AlgMD5
  - | AlgMD5sess
- data Challenge
  - = ChalBasic {
    - chRealm :: String
    }
  - | ChalDigest {
    - chRealm :: String
    - chDomain :: [URI]
    - chNonce :: String
    - chOpaque :: Maybe String
    - chStale :: Bool
    - chAlgorithm :: Maybe Algorithm
    - chQop :: [Qop]
    }
- data Qop
  - = QopAuth
  - | QopAuthInt
- headerToChallenge :: URI -> Header -> Maybe Challenge
- withAuthority :: Authority -> Request ty -> String

# Documentation

data Authority

`Authority` specifies the HTTP Authentication method to use for a given domain/realm; `Basic` or `Digest`.

Constructors

AuthBasic |

Fields

auRealm :: String
auUsername :: String
auPassword :: String
auSite :: URI

AuthDigest |

Fields

auRealm :: String
auUsername :: String
auPassword :: String
auNonce :: String
auAlgorithm :: Maybe Algorithm
auDomain :: [URI]
auOpaque :: Maybe String
auQop :: [Qop]

data Algorithm

`Algorithm` controls the digest algorithm to, `MD5` or `MD5Session`.

Constructors

AlgMD5 |
AlgMD5sess |

Instances

Eq Algorithm |
Show Algorithm |

data Challenge

Constructors

ChalBasic |

Fields

chRealm :: String

ChalDigest |

Fields

chRealm :: String
chDomain :: [URI]
chNonce :: String
chOpaque :: Maybe String
chStale :: Bool
chAlgorithm :: Maybe Algorithm
chQop :: [Qop]

data Qop

Constructors

QopAuth |
QopAuthInt |

Instances

Eq Qop |
Show Qop |

headerToChallenge :: URI -> Header -> Maybe Challenge

`headerToChallenge base www_auth` tries to convert the `WWW-Authenticate` header `www_auth` into a `Challenge` value.

withAuthority :: Authority -> Request ty -> String

`withAuthority auth req` generates a credentials value from the `auth` `Authority`, in the context of the given request.

If a client nonce was to be used then this function might need to be of type ... -> BrowserAction String