从jwt令牌中读取到期日期

时间:2017-02-25 18:09:21

标签: scala jwt

我正在使用jwt-core库(“com.pauldijou”%%“jwt-core”%“0.11.0”)。我有一个JWT令牌,我想从令牌中读取到期日期。

我查看了他们在github网站上的示例,他们有一些角度和游戏框架示例。

https://github.com/pauldijou/jwt-scala/tree/master/examples

我只想要简单的scala代码。没有涉及UI框架。你能指点我帮我从jwt令牌中提取到期时间戳的样本吗?

2 个答案:

答案 0 :(得分:1)

JWT只不过是void main()编码并签名{{​​1}}。

我无法帮助您从JWT中提取到期日期,但我可以帮助您完成从获取 到期日期的步骤 a JWT。

以下是示例令牌:

base64

您可以通过复制示例并使用代码string

jwt.io对其进行解码来检查已解码的版本

JWT的第二部分是您的有效负载,其中有效期最有可能存在。您需要检查提供者端的有效负载定义,并了解其属性。

现在,对于Scala部分:

首先,让JWT格式化为JSON - JWT:JSON Web Token - 您需要选择JSON序列化器/解串器库。对于此示例,我使用的是eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImV4cCI6MTIzNDIzNDIzNH0.ADaAdqIjKzQ4uPlavizyGyng2Vq1yQqYjcZ-EeqN8Do

secret

结果:

  

1234234234

使用的喷涂库是:spray-json

答案 1 :(得分:0)

感谢您的回答。使用scala-jwt库也很容易。

import pdi.jwt._
import scala.util.{Failure, Success}
import io.circe.generic.auto._
import io.circe.parser._

val expTimeOpt = Jwt.decode(token, JwtOptions(signature = false, expiration = true, notBefore = false, leeway = 0)) match {
   case Success(s) => decode[JwtExpiration](s).fold[Option[JwtExpiration]](_ => Option.empty[JwtToken], Some(_))
   case Failure(f) => Option.empty[JwtExpiration]
}

case class JwtExpiration(exp: Long)