servant-server-0.20.3.0: A family of combinators for defining webservices APIs and serving them

Safe Haskell | None
Language | Haskell2010

Servant.Server.Internal.BasicAuth

Contents

- Basic Auth

Synopsis

- data BasicAuthResult usr
  - = Unauthorized
  - | BadPassword
  - | NoSuchUser
  - | Authorized usr
- newtype BasicAuthCheck usr = BasicAuthCheck {
  - unBasicAuthCheck :: BasicAuthData -> IO (BasicAuthResult usr)
  }
- mkBAChallengerHdr :: ByteString -> Header
- decodeBAHdr :: Request -> Maybe BasicAuthData
- runBasicAuth :: Request -> ByteString -> BasicAuthCheck usr -> DelayedIO usr

# Basic Auth

data BasicAuthResult usr Source #

servant-server's current implementation of basic authentication is not immune to certain kinds of timing attacks. Decoding payloads does not take a fixed amount of time.

The result of authentication/authorization

Constructors

Unauthorized |
BadPassword |
NoSuchUser |
Authorized usr |

#### Instances

Instances details

Functor BasicAuthResult Source # |
Instance details Defined in Servant.Server.Internal.BasicAuth Methods fmap :: (a -> b) -> BasicAuthResult a -> BasicAuthResult b Source # (<$) :: a -> BasicAuthResult b -> BasicAuthResult a Source #
Generic (BasicAuthResult usr) Source # |

Instance details

Defined in Servant.Server.Internal.BasicAuth

Associated Types

type Rep (BasicAuthResult usr) |

Instance details

Defined in Servant.Server.Internal.BasicAuth

type Rep (BasicAuthResult usr) = D1 ('MetaData "BasicAuthResult" "Servant.Server.Internal.BasicAuth" "servant-server-0.20.3.0-K3OEf3La2TA6Zg4wWiPZKx" 'False) ((C1 ('MetaCons "Unauthorized" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BadPassword" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "NoSuchUser" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Authorized" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 usr))))

Methods

from :: BasicAuthResult usr -> Rep (BasicAuthResult usr) x Source #

to :: Rep (BasicAuthResult usr) x -> BasicAuthResult usr Source #

Read usr => Read (BasicAuthResult usr) Source # |
Instance details Defined in Servant.Server.Internal.BasicAuth Methods readsPrec :: Int -> ReadS (BasicAuthResult usr) Source # readList :: ReadS [BasicAuthResult usr] Source # readPrec :: ReadPrec (BasicAuthResult usr) Source # readListPrec :: ReadPrec [BasicAuthResult usr] Source #
Show usr => Show (BasicAuthResult usr) Source # |
Instance details Defined in Servant.Server.Internal.BasicAuth Methods showsPrec :: Int -> BasicAuthResult usr -> ShowS Source # show :: BasicAuthResult usr -> String Source # showList :: [BasicAuthResult usr] -> ShowS Source #
Eq usr => Eq (BasicAuthResult usr) Source # |
Instance details Defined in Servant.Server.Internal.BasicAuth Methods (==) :: BasicAuthResult usr -> BasicAuthResult usr -> Bool Source # (/=) :: BasicAuthResult usr -> BasicAuthResult usr -> Bool Source #
type Rep (BasicAuthResult usr) Source # |

Instance details

Defined in Servant.Server.Internal.BasicAuth

type Rep (BasicAuthResult usr) = D1 ('MetaData "BasicAuthResult" "Servant.Server.Internal.BasicAuth" "servant-server-0.20.3.0-K3OEf3La2TA6Zg4wWiPZKx" 'False) ((C1 ('MetaCons "Unauthorized" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BadPassword" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "NoSuchUser" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Authorized" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 usr))))

newtype BasicAuthCheck usr Source #

Datatype wrapping a function used to check authentication.

Constructors

BasicAuthCheck |

Fields

- unBasicAuthCheck :: BasicAuthData -> IO (BasicAuthResult usr)

#### Instances

Instances details

Functor BasicAuthCheck Source # |
Instance details Defined in Servant.Server.Internal.BasicAuth Methods fmap :: (a -> b) -> BasicAuthCheck a -> BasicAuthCheck b Source # (<$) :: a -> BasicAuthCheck b -> BasicAuthCheck a Source #
Generic (BasicAuthCheck usr) Source # |

Instance details

Defined in Servant.Server.Internal.BasicAuth

Associated Types

type Rep (BasicAuthCheck usr) |

Instance details

Defined in Servant.Server.Internal.BasicAuth

type Rep (BasicAuthCheck usr) = D1 ('MetaData "BasicAuthCheck" "Servant.Server.Internal.BasicAuth" "servant-server-0.20.3.0-K3OEf3La2TA6Zg4wWiPZKx" 'True) (C1 ('MetaCons "BasicAuthCheck" 'PrefixI 'True) (S1 ('MetaSel ('Just "unBasicAuthCheck") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (BasicAuthData -> IO (BasicAuthResult usr)))))

Methods

from :: BasicAuthCheck usr -> Rep (BasicAuthCheck usr) x Source #

to :: Rep (BasicAuthCheck usr) x -> BasicAuthCheck usr Source #

type Rep (BasicAuthCheck usr) Source # |

Instance details

Defined in Servant.Server.Internal.BasicAuth

type Rep (BasicAuthCheck usr) = D1 ('MetaData "BasicAuthCheck" "Servant.Server.Internal.BasicAuth" "servant-server-0.20.3.0-K3OEf3La2TA6Zg4wWiPZKx" 'True) (C1 ('MetaCons "BasicAuthCheck" 'PrefixI 'True) (S1 ('MetaSel ('Just "unBasicAuthCheck") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (BasicAuthData -> IO (BasicAuthResult usr)))))

mkBAChallengerHdr :: ByteString -> Header Source #

Internal method to make a basic-auth challenge

decodeBAHdr :: Request -> Maybe BasicAuthData Source #

Find and decode an `Authorization` header from the request as Basic Auth

runBasicAuth :: Request -> ByteString -> BasicAuthCheck usr -> DelayedIO usr Source #

Run and check basic authentication, returning the appropriate http error per the spec.