Creating a New JWT
One of the primary goals of this library is to create a new JWT (or in short token).
With Default Options
The easiest way to create a token is to use the
jwt.New
function. It
then needs one of the available signing methods, to
finally sign and convert the token into a string format (using the
SignedString
method). In the first example, we are using a symmetric signing method, i.e.,
HS256. For a symmetric method, both the signing and the verifying key are the
same and thus, both must be equally protected (and should definitely NOT be
stored in your code).
var (
key []byte
t *jwt.Token
s string
)
key = /* Load key from somewhere, for example an environment variable */
t = jwt.New(jwt.SigningMethodHS256) // (1)!
s = t.SignedString(key) // (2)!
- This initializes a new
jwt.Token
struct based on the supplied signing method. In this case a symmetric method is chosen. - This step computes a cryptographic signature based on the supplied key.
Signing using an asymmetric signing method (for example ECDSA) works quite similar. For an asymmetric method, the private key (which must be kept secret) is used to sign and the corresponding public key (which can be freely transmitted) is used to verify the token.
var (
key *ecdsa.PrivateKey
t *jwt.Token
s string
)
key = /* Load key from somewhere, for example a file */
t = jwt.New(jwt.SigningMethodES256) // (1)!
s = t.SignedString(key) // (2)!
- This initializes a new
jwt.Token
struct based on the supplied signing method. In this case a asymmetric method is chosen. - This step computes a cryptographic signature based on the supplied private key.
Note, that the chosen signing method and the type of key must match. Please refer to Signing Methods for a complete overview.
With Additional Claims
With Options
While we already prepared a
jwt.TokenOption
type, which can be supplied as a varargs to
jwt.New
and
jwt.NewWithClaims
,
these are strictly for future compatibility and are currently not used.