servant-server-0.11: 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 #

servant-server's current implementation of basic authentication is not immune to certian 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

Functor BasicAuthResult # |
Methods fmap :: (a -> b) -> BasicAuthResult a -> BasicAuthResult b # (<$) :: a -> BasicAuthResult b -> BasicAuthResult a #
Eq usr => Eq (BasicAuthResult usr) # |
Methods (==) :: BasicAuthResult usr -> BasicAuthResult usr -> Bool # (/=) :: BasicAuthResult usr -> BasicAuthResult usr -> Bool #
Read usr => Read (BasicAuthResult usr) # |
Methods readsPrec :: Int -> ReadS (BasicAuthResult usr) # readList :: ReadS [BasicAuthResult usr] # readPrec :: ReadPrec (BasicAuthResult usr) # readListPrec :: ReadPrec [BasicAuthResult usr] #
Show usr => Show (BasicAuthResult usr) # |
Methods showsPrec :: Int -> BasicAuthResult usr -> ShowS # show :: BasicAuthResult usr -> String # showList :: [BasicAuthResult usr] -> ShowS #
Generic (BasicAuthResult usr) # |
Associated Types type Rep (BasicAuthResult usr) :: * -> * # Methods from :: BasicAuthResult usr -> Rep (BasicAuthResult usr) x # to :: Rep (BasicAuthResult usr) x -> BasicAuthResult usr #
type Rep (BasicAuthResult usr) # |
type Rep (BasicAuthResult usr) = D1 (MetaData "BasicAuthResult" "Servant.Server.Internal.BasicAuth" "servant-server-0.11-IADlUM83Uj7GUOFTlU9US9" False) ((:+:) ((:+:) (C1 (MetaCons "Unauthorized" PrefixI False) U1) (C1 (MetaCons "BadPassword" PrefixI False) U1)) ((:+:) (C1 (MetaCons "NoSuchUser" PrefixI False) U1) (C1 (MetaCons "Authorized" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 usr)))))

newtype BasicAuthCheck usr #

Datatype wrapping a function used to check authentication.

Constructors

BasicAuthCheck |
Fields unBasicAuthCheck :: BasicAuthData -> IO (BasicAuthResult usr)

Instances

Functor BasicAuthCheck # |
Methods fmap :: (a -> b) -> BasicAuthCheck a -> BasicAuthCheck b # (<$) :: a -> BasicAuthCheck b -> BasicAuthCheck a #
Generic (BasicAuthCheck usr) # |
Associated Types type Rep (BasicAuthCheck usr) :: * -> * # Methods from :: BasicAuthCheck usr -> Rep (BasicAuthCheck usr) x # to :: Rep (BasicAuthCheck usr) x -> BasicAuthCheck usr #
type Rep (BasicAuthCheck usr) # |
type Rep (BasicAuthCheck usr) = D1 (MetaData "BasicAuthCheck" "Servant.Server.Internal.BasicAuth" "servant-server-0.11-IADlUM83Uj7GUOFTlU9US9" True) (C1 (MetaCons "BasicAuthCheck" PrefixI True) (S1 (MetaSel (Just Symbol "unBasicAuthCheck") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (BasicAuthData -> IO (BasicAuthResult usr)))))

mkBAChallengerHdr :: ByteString -> Header #

Internal method to make a basic-auth challenge

decodeBAHdr :: Request -> Maybe BasicAuthData #

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

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

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