JSONWebToken#
SYNOPSIS#
Support for JSON web tokens (JWT).
PUBLIC INTERFACE#
new()#
Don't use the constructor directly, use the ObjectManager instead:
my $JWTObject = $Kernel::OM->Get('Kernel::System::JSONWebToken');
IsSupported()#
Checks (and requires) Crypt::JWT module needed for JWT support.
my $JWTObjectIsSupported = $JWTObject->IsSupported();
Returns true value if JWT is supported.
Encode()#
Encodes a JSON web token with the given data.
my $JWT = $JWTObject->Encode(
Payload => {
# arbitrary data
Subject => '...',
SomeOtherData => {
# ...
},
},
Algorithm => 'RS512', # see https://metacpan.org/pod/Crypt::JWT#alg
# Key or key file
Key => '...', # see https://metacpan.org/pod/Crypt::JWT#key1
KeyFilePath => '/home/user1/key.pem',
KeyPassword => '...', # optional, password for the key
AdditionalHeaderData => { # optional
# arbitrary data
Type => '...',
},
# Optional: Use this hash to give additional parameters to Crypt::JWT.
CryptJWTParameters => {
# see https://metacpan.org/pod/Crypt::JWT#encode_jwt
enc => '...',
# ...
},
# Optional: Data to be placed in placeholders in given Payload and AdditionalHeaderData parameters.
# All values of the given payload and additional header data hash will be searched
# for all the given placeholders and their values be replaced.
PlaceholderData => {
OTRS_JWT_CertSubject => '...',
OTRS_JWT_ExpirationTimestamp => '9999999999999',
# ...
},
);
Returns a JSON web token string on success.
Decode()#
Decodes a JSON web token.
my $JWT = $JWTObject->Decode(
Token => '...',
# Key or KeyFilePath
Key => '...', # see https://metacpan.org/pod/Crypt::JWT#key1
KeyFilePath => '/home/user1/key.pem',
KeyPassword => '...', # optional, password for the key
# Optional: Use this hash to give additional parameters to Crypt::JWT.
CryptJWTParameters => {
# see https://metacpan.org/pod/Crypt::JWT#decode_jwt
# '...' => '...',
# ...
},
);
Returns decoded data of the given JSON web token.