JWTはbase64
と符号化され、string
と署名されたものです。
私はあなたのJWTから有効期限を抽出助けることはできませんが、私は JWTから有効期限を取得する工程を経ることであなたを助けることができます。ここで
は、サンプル・トークンです:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImV4cCI6MTIzNDIzNDIzNH0.ADaAdqIjKzQ4uPlavizyGyng2Vq1yQqYjcZ-EeqN8Do
あなたはJWTの2番目の部分は、あなたの場合の例をコピーし、コードsecret
でjwt.ioでそれを復号化して復号されたバージョンを確認することができますペイロード、有効期限が最も生存する可能性が高い場所。プロバイダ側のペイロード定義を確認し、その属性が何であるかを理解する必要があります。今
、Scalaの一部について:
まず、JWTはJSONでフォーマットされた - JWT:JSONウェブトークン - あなたはJSONシリアライザ/デシリアライザライブラリを選択する必要があります。この例では、私はspray-json
を使用しています。
import java.util.Base64
import spray.json._
case class Payload(sub: String, name: String, admin: Boolean, exp: Int) // exp is the expiration date
object ExpirationDateTest extends DefaultJsonProtocol {
implicit val payloadJsonFormat: RootJsonFormat[Payload] = jsonFormat4(Payload) // defines a contract to deserialize the JSON object
val jwtToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImV4cCI6MTIzNDIzNDIzNH0.ADaAdqIjKzQ4uPlavizyGyng2Vq1yQqYjcZ-EeqN8Do"
val jwtTokenPayload = jwtToken.split('.')(1)
val expirationDate = new String(Base64.getDecoder.decode(jwtTokenPayload)).parseJson.convertTo[Payload].exp
def getExpirationDate: Int = {
expirationDate
}
}
println(ExpirationDateTest.getExpirationDate)
結果:使用
スプレーライブラリです:答えを"io.spray" %% "spray-json" % "1.3.2"