2016-12-04 13:24:03 +02:00
2016-12-04 13:22:41 +02:00
2015-01-19 15:41:35 +01:00
2015-02-12 20:15:21 +01:00
2016-07-12 19:07:09 +02:00

JWT Implementation for Nim-lang

This is a implementation of JSON Web Tokens for Nim, it allows for the following operations to be performed:

proc toJWT*(node: JsonNode): JWT - parse a JSON object representing a JWT token to create a JWT token object.

proc toJWT*(s: string): JWT - parse a base64 string to decode it to a JWT token object

sign*(token: var JWT, secret: var string) - sign a token. Creates a signature property on the given token and assigns the signature to it.

proc verify*(token: JWT, secret: var string): bool - verify a token (typically on your incoming requests)

proc $*(token: JWT): string - creates a b64url string from the token

Example

An example to demonstrate use with a userId

import jwt, times, json, tables

var secret = "secret"

proc sign*(userId: string): string =
  var token = toJWT(%*{
      "header": {
        "alg": "HS256",
        "typ": "JWT"
      },
      "claims": {
        "userId": userId,
        "exp": (getTime() + 1.days).toSeconds().int
      }
    })

  token.sign(secret)

  result = $token

proc verify*(token: string): bool =
  try:
    let jwtToken = token.toJWT()
    result = jwtToken.verify(secret)
  except InvalidToken:
    result = false

proc decode*(token: string): string =
  let jwt = token.toJWT()
  result = $jwt.claims["userId"].node.str

Description
No description provided
Readme MIT 167 KiB
Languages
Nim 100%