Safe Haskell | None |
---|---|
Language | Haskell2010 |
A Yesod middleware for <<http://tools.ietf.org/html/rfc1945#section-11.1 HTTP Basic Authentication>>
Performs a single authentication lookup per request and uses the <<https://github.com/yesodweb/yesod/blob/master/yesod-core/Yesod/Core/TypeCache.hs#L21 Yesod request-local caching>> mechanisms to store valid auth credentials found in the Authorization header.
The recommended way to use this module is to override the
maybeAuthId
to defaultMaybeBasicAuthId
and supply a lookup
function.
instance YesodAuth App where type AuthId App = Text getAuthId = return . Just . credsIdent maybeAuthId = defaultMaybeBasicAuthId checkCreds defaultAuthSettings where checkCreds = k s -> return $ (k == "user") && (s == "secret")
WWW-Authenticate challenges are currently not implemented. The current workaround is to override the error handler:
instance Yesod App where errorHandler NotAuthenticated = selectRep $ provideRep $ do addHeader "WWW-Authenticate" $ T.concat [ "RedirectJSON realm="Realm", param="myurl.com"" ] -- send error response here ... errorHandler e = defaultErrorHandler e ...
Proper response status on failed authentication is not implemented.
The current workaround is to override the Yesod
typeclass
isAuthorized
function to handle required auth routes. e.g.
instance Yesod App where isAuthorized SecureR _ = maybeAuthId >>= return . maybe AuthenticationRequired (const Authorized) isAuthorized _ _ = Authorized
Synopsis
- defaultMaybeBasicAuthId :: MonadHandler m => CheckCreds -> AuthSettings -> m (Maybe Text)
- data AuthSettings
- authRealm :: AuthSettings -> Text
- defaultAuthSettings :: AuthSettings
Drop in replace for maybeAuthId.
defaultMaybeBasicAuthId :: MonadHandler m => CheckCreds -> AuthSettings -> m (Maybe Text) Source #
Retrieve the AuthId
using Authorization header.
If valid credentials are found and authorized the auth id is cached.
TODO use more general type than Text to represent the auth id
The AuthSettings currently do nothing
data AuthSettings Source #
Authentication Settings
Instances
Eq AuthSettings Source # | |
Defined in Yesod.Auth.Http.Basic (==) :: AuthSettings -> AuthSettings -> Bool # (/=) :: AuthSettings -> AuthSettings -> Bool # | |
Show AuthSettings Source # | |
Defined in Yesod.Auth.Http.Basic showsPrec :: Int -> AuthSettings -> ShowS # show :: AuthSettings -> String # showList :: [AuthSettings] -> ShowS # |
authRealm :: AuthSettings -> Text Source #
defaultAuthSettings :: AuthSettings Source #
Ready-to-go AuthSettings
which can be used