1
1
module Servant.Auth.Server.Internal.JWT where
2
2
3
3
import Control.Lens
4
- import Control.Monad.Except
4
+ import Control.Monad ( MonadPlus ( .. ), guard )
5
5
import Control.Monad.Reader
6
6
import qualified Crypto.JOSE as Jose
7
7
import qualified Crypto.JWT as Jose
8
- import Data.Aeson (FromJSON , Result (.. ), ToJSON , fromJSON ,
9
- toJSON )
10
8
import Data.ByteArray (constEq )
11
9
import qualified Data.ByteString as BS
12
10
import qualified Data.ByteString.Lazy as BSL
13
- import qualified Data.HashMap.Strict as HM
14
11
import Data.Maybe (fromMaybe )
15
- import qualified Data.Text as T
16
12
import Data.Time (UTCTime )
17
13
import Network.Wai (requestHeaders )
18
14
@@ -42,7 +38,7 @@ jwtAuthCheck jwtSettings = do
42
38
-- token expires.
43
39
makeJWT :: ToJWT a
44
40
=> a -> JWTSettings -> Maybe UTCTime -> IO (Either Jose. Error BSL. ByteString )
45
- makeJWT v cfg expiry = runExceptT $ do
41
+ makeJWT v cfg expiry = Jose. runJOSE $ do
46
42
bestAlg <- Jose. bestJWSAlg $ signingKey cfg
47
43
let alg = fromMaybe bestAlg $ jwtAlg cfg
48
44
ejwt <- Jose. signClaims (signingKey cfg)
@@ -59,7 +55,7 @@ makeJWT v cfg expiry = runExceptT $ do
59
55
verifyJWT :: FromJWT a => JWTSettings -> BS. ByteString -> IO (Maybe a )
60
56
verifyJWT jwtCfg input = do
61
57
keys <- validationKeys jwtCfg
62
- verifiedJWT <- runExceptT $ do
58
+ verifiedJWT <- Jose. runJOSE $ do
63
59
unverifiedJWT <- Jose. decodeCompact (BSL. fromStrict input)
64
60
Jose. verifyClaims
65
61
(jwtSettingsToJwtValidationSettings jwtCfg)
0 commit comments