22.2 ENCODEファンクション

このファンクションは、ペイロードをエンコードし、オプションでペイロードを暗号化します。

構文

function encode (
     p_iss           in varchar2                 default null,
     p_sub           in varchar2                 default null,
     p_aud           in varchar2                 default null,
     p_nbf_ts        in timestamp with time zone default null,
     p_iat_ts        in timestamp with time zone default systimestamp,
     p_exp_sec       in pls_integer              default null,
     p_jti           in varchar2                 default null,
     p_other_claims  in varchar2                 default null,
     p_signature_key in raw                      default null )
     return varchar2

パラメータ

表22-2 ENCODEファンクションのパラメータ

パラメータ 説明

p_iss

オプションのiss (発行者)クレームです。

p_sub

オプションのsub (件名)クレームです。

p_aud

オプションのaud (対象者)クレームです。

p_nbf_ts

オプションのnbf (有効期間の開始日)クレームです。

p_iat_ts

オプションのiat (発効日)クレーム(デフォルトのシステムスタンプ)です。

p_exp_sec

オプションのexp (有効期限)クレーム(秒単位)です。開始時間は、nbfiatまたは現在の時刻から取得されます。

p_jti

オプションのjti (JWT ID)クレームです。

p_other_claims

追加のクレームがあるオプションのローJSONです。

p_signature_key

署名用のオプションのMACキー。NULLでない場合、HS256署名が追加されます。これには、12c以上が必要です。

戻り値

varchar2 (エンコードされたトークン値)。

この例では、Example JWT Recipientによる使用を目的として、Example UserのJWT値を作成し、出力しています。トークンは5分間有効です。

declare
    l_jwt_value varchar2(32767);
begin
    l_jwt_value := apex_jwt.encode (
                       p_iss => 'Example Issuer',
                       p_sub => 'Example User',
                       p_aud => 'Example JWT Recipient',
                       p_exp_sec => 60*5,
                       p_other_claims => '"name1": '||apex_json.stringify('value1')||
                                         ',"name2": '||apex_json.stringify('value2'),
                       p_signature_key => ... encryption key ... );
    sys.dbms_output.put_line(l_jwt_value);
end;