Guest User

Untitled

a guest
Jun 17th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. import java.util.Date
  2.  
  3. import com.auth0.jwt.algorithms.Algorithm
  4. import com.auth0.jwt.interfaces.DecodedJWT
  5. import com.auth0.jwt.{JWT => Auth0JWT}
  6. import com.typesafe.config.Config
  7.  
  8. import scala.util.Try
  9.  
  10. object JWT {
  11.  
  12. private def algorithm(implicit settings: JWTSettings): Algorithm = Algorithm.HMAC256(secret)
  13. private def secret(implicit settings: JWTSettings): String = settings.secret
  14. private def issuer(implicit settings: JWTSettings): String = settings.issuer
  15. private def expiresAt(issuedAt: Date)(implicit settings: JWTSettings): Date = new Date(issuedAt.getTime + settings.expiresAfter.toMillis)
  16.  
  17. def create(subject: String)(implicit settings: JWTSettings): Try[String] = Try {
  18. val issuedAt = new Date()
  19. val token =
  20. Auth0JWT
  21. .create()
  22. .withIssuer(issuer)
  23. .withSubject(subject)
  24. .withIssuedAt(issuedAt)
  25. .withExpiresAt(expiresAt(issuedAt))
  26. .sign(algorithm)
  27. token
  28. }
  29.  
  30. def verify(token: String)(implicit settings: JWTSettings): Try[DecodedJWT] = Try {
  31. val verifier =
  32. Auth0JWT
  33. .require(algorithm)
  34. .withIssuer(issuer)
  35. .build()
  36. verifier.verify(token)
  37. }
  38.  
  39. }
  40.  
  41. class JWTSettings(config: Config) {
  42. import utils.DurationExtensions._
  43. private val jwtConfig = config.getConfig("jwt")
  44. val secret = jwtConfig.getString("secret")
  45. val issuer = jwtConfig.getString("issuer")
  46. val expiresAfter = jwtConfig.getDuration("expires-after").toScala
  47. }
  48.  
  49. object JWTSettings {
  50. def apply(config: Config): JWTSettings = new JWTSettings(config)
  51. }
Add Comment
Please, Sign In to add comment