Table of Contents
List of Examples
key_mode
parameterjwt_generate
usagejwt_verify
usagejwt_verify_key
usage$jwt(name)
usageTable of Contents
This module provides JWT (JSON Web Token) functions to be used in Kamailio configuration file.
It relies on libjwt (at least v1.12.0) library (https://github.com/benmcollins/libjwt).
Generate the JWT, its value can be retrieved in the variable $jwt(val).
The parameters are:
prvkey - path to private key
alg - the algorithm to build the signature, as supported by the libjwt (e.g., RS256, HS256, ES256, ...)
claims - the list of claims to be added to JWT, in the format "name1=value1;name2=value2;..." (same as the SIP parameters format). The string values can be enclosed in single or double quotes. If a value is not eclosed in between quotes, it is added as numeric value if it is successfully converted to a long value, otherwise is added as string value.
headers - the list of headers to be added to JWT, in the format "name1=value1;name2=value2;..." (same as the SIP parameters format). The string values can be enclosed in single or double quotes. If a value is not eclosed in between quotes, it is added as numeric value if it is successfully converted to a long value, otherwise is added as string value.
This function can be used from ANY_ROUTE.
Example 1.2. jwt_generate
usage
... jwt_generate("/path/to/prvkey.pem", "RS256", "caller='$fU';callee='$tU';callid='$ci';index=100"); ...
Verify the JWT.
The parameters are:
pubkeypath - path to public key file
alg - the algorithm to build the signature, as supported by the libjwt (e.g., RS256, HS256, ES256, ...)
claims - the list of claims to be checked they are in the JWT, in the format "name1=value1;name2=value2;..." (same as the SIP parameters format, see also the description of claims parameter for jwt_generate()).
jwtval - the value of the JWT to verify
This function can be used from ANY_ROUTE.
Example 1.3. jwt_verify
usage
... if(!jwt_verify("/path/to/pubkey.pem", "RS256", "caller='$fU';callee='$tU';callid='$ci';index=100", "$var(jwt)") { xwarn("failed to verify jwt\n"); } ...
Verify the JWT.
The parameters are:
pubkeyval - public key value
alg - the algorithm to build the signature, as supported by the libjwt (e.g., RS256, HS256, ES256, ...)
claims - the list of claims to be checked they are in the JWT, in the format "name1=value1;name2=value2;..." (same as the SIP parameters format, see also the description of claims parameter for jwt_generate()).
jwtval - the value of the JWT to verify
This function can be used from ANY_ROUTE.
Example 1.4. jwt_verify_key
usage
... if(!jwt_verify_key("...", "RS256", "caller='$fU';callee='$tU';callid='$ci';index=100", "$var(jwt)") { xwarn("failed to verify jwt\n"); } ...
Get the values and attributes after using JWT functions.
The key can be:
val - the value of JWT after a successful jwt_generate().
status - the status of verification after a failed jwt_verify().
Example 1.5. $jwt(name)
usage
... jwt_generate("/path/to/prvkey.pem", "RS256", "caller='$fU';callee='$tU';callid='$ci';index=100"); xinfo("jwt is: $jwt(val)"); ...