Sample code for 30+ languages & platforms
Go

bitzlato.com whoami

See more JSON Web Token (JWT) Examples

Demonstrates sending a request to the bitzlato.com whoami endpoint using an ES256 JWT token for authentication.

Chilkat Go Downloads

Go
    success := false

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    //  Use the following ECC key loaded from JWK format.
    jwk := chilkat.NewJsonObject()
    success = jwk.UpdateString("kty","EC")
    success = jwk.UpdateString("crv","P-256")
    success = jwk.UpdateString("x","...")
    success = jwk.UpdateString("y","...")
    success = jwk.UpdateString("d","...")

    eccKey := chilkat.NewPrivateKey()
    success = eccKey.LoadJwk(*jwk.Emit())
    if success == false {
        fmt.Println(eccKey.LastErrorText())
        jwk.DisposeJsonObject()
        eccKey.DisposePrivateKey()
        return
    }

    jwt := chilkat.NewJwt()

    // Build the JOSE header
    jose := chilkat.NewJsonObject()
    success = jose.AppendString("format","compact")
    success = jose.AppendString("alg","ES256")

    // Now build the JWT claims (also known as the payload)

    // Our JWT claims will contain members as shown here:

    // 	{
    // 	  "email":"your_email@example.com",
    // 	  "aud":"usr",
    // 	  "iat":"1588286154",
    // 	  "jti":"555D9123"
    // 	}

    claims := chilkat.NewJsonObject()
    claims.AppendString("jti","555D9123")
    claims.AppendString("email","your_email@example.com")

    // Set the timestamp of when the JWT was created to now minus 60 seconds
    curDateTime := jwt.GenNumericDate(-60)
    success = claims.AddIntAt(-1,"iat",curDateTime)

    // Set the "not process before" timestamp to now minus 60 seconds
    success = claims.AddIntAt(-1,"nbf",curDateTime)

    // Set the timestamp defining an expiration time (end time) for the token
    // to be now + 1 hour (3600 seconds)
    success = claims.AddIntAt(-1,"exp",curDateTime + 3600)

    claims.AppendString("aud","usr")

    // Produce the smallest possible JWT:
    jwt.SetAutoCompact(true)

    // Create the JWT token.  This is where the RSA signature is created.
    jwt_token := jwt.CreateJwtPk(*jose.Emit(),*claims.Emit(),eccKey)

    fmt.Println(*jwt_token)

    // Send the HTTPS GET with the jwt_token used for Authorization.
    http := chilkat.NewHttp()
    http.SetAuthToken(*jwt_token)
    responseStr := http.QuickGetStr("https://bitzlato.com/api/auth/whoami")
    if http.LastMethodSuccess() == false {
        fmt.Println(http.LastErrorText())
        jwk.DisposeJsonObject()
        eccKey.DisposePrivateKey()
        jwt.DisposeJwt()
        jose.DisposeJsonObject()
        claims.DisposeJsonObject()
        http.DisposeHttp()
        return
    }

    fmt.Println("status code = ", http.LastStatus())
    fmt.Println(*responseStr)

    jwk.DisposeJsonObject()
    eccKey.DisposePrivateKey()
    jwt.DisposeJwt()
    jose.DisposeJsonObject()
    claims.DisposeJsonObject()
    http.DisposeHttp()