38.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

パラメータ

パラメータ 説明
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署名が追加されます。これには、Oracle Database 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;