22.3 DECODEファンクション

このファンクションは、ロー・トークン値をデコードします。

構文

function decode (
    p_value         in varchar2,
    p_signature_key in raw      default null )
return t_token;

パラメータ

表22-3 DECODEファンクションのパラメータ

パラメータ 説明

p_value

ロー・トークン値にはBase64でエンコードされた3つの部分が含まれ、各部分は.で区切られています。それらの部分とはヘッダー、ペイロードおよびシグネチャです。

p_signature_key

NULLでない場合は、このキーおよびヘッダーに指定されているアルゴリズムを使用してp_valueのシグネチャを検証します。アルゴリズムとしてHS256およびnoneがサポートされていますが、HS256を使用するには12c以上が必要です。

戻り値

t_token

Raises

VALUE_ERROR: 入力値は無効です。

WWV_FLOW_CRYPTO.UNSUPPORTED_FUNCTION: サポートされていないファンクションを使用してトークンが署名されています。

この例では、エンコードされたトークンをデコードし、その内容を出力します。

declare
    l_token apex_jwt.t_token;
    l_keys apex_t_varchar2;
begin
    l_token := apex_jwt.decode (
                   p_value => 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb2dnZWRJbkFzIjoiYWRtaW4iLCJpYXQiOjE0MjI3Nzk2Mzh9.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI' );
    sys.dbms_output.put_line('--- Header ---');
    apex_json.parse(l_token.header);
    l_keys := apex_json.get_members('.');
    for i in 1 .. l_keys.count loop
        sys.dbms_output.put_line(l_keys(i)||'='||apex_json.get_varchar2(l_keys(i));
    end loop;
    sys.dbms_output.put_line('--- Payload ---');
    apex_json.parse(l_token.payload);
    l_keys := apex_json.get_members('.');
    for i in 1 .. l_keys.count loop
        sys.dbms_output.put_line(l_keys(i)||'='||apex_json.get_varchar2(l_keys(i));
    end loop;
end;

出力:

--- Header ---
alg=HS256
typ=JWT
--- Payload ---
loggedInAs=admin
iat=1422779638