
############
JSONWebToken
############


********
SYNOPSIS
********


Support for JSON web tokens (JWT).


****************
PUBLIC INTERFACE
****************


new()
=====



.. code-block:: perl

     Don't use the constructor directly, use the ObjectManager instead:
 
     my $JWTObject = $Kernel::OM->Get('Kernel::System::JSONWebToken');



IsSupported()
=============



.. code-block:: perl

     Checks (and requires) Crypt::JWT module needed for JWT support.
 
     my $JWTObjectIsSupported = $JWTObject->IsSupported();
 
     Returns true value if JWT is supported.



Encode()
========



.. code-block:: perl

     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()
========



.. code-block:: perl

     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.




