Di seguito una funzione per leggere un Token JWT utilizzando una procedura pl-sql. Di seguito diamo una definizione di Token JWT:
Un JSON Web Token è un token di accesso standardizzato secondo RFC 7519 e consente lo scambio sicuro di dati tra due parti. Contiene tutte le informazioni importanti su un’entità, in modo che non sia necessaria alcuna interrogazione del database e che la sessione non debba essere memorizzata sul server.
Un token JWT si presenta nel seguente formato:
Token = base64Header + ‘.’ + base64Payload + ‘.’ + signature
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.dyt0CoTl4WoVjAHI9Q_CwSKhl6d_9rhM3NrXuJttkao
Per poter decodificare quanto presente nel seguente Token possiamo utilizzare la seguente funzione:
p_token VARCHAR2
) RETURN VARCHAR2 AS
l_token apex_jwt.t_token;
l_keys apex_t_varchar2;
l_l_keys varchar2(4000);
v_l_keys varchar2(4000);
v_alg varchar2(20);
BEGIN
l_token := apex_jwt.decode (p_value => p_token);
-------------------------------------------------
------Header
-------------------------------------------------
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
l_l_keys:=l_keys(i)||'='||apex_json.get_varchar2(l_keys(i));
v_alg:=apex_json.get_varchar2(l_keys(i));
dbms_output.put_line(l_l_keys);
end loop;
sys.dbms_output.put_line('--- Payload ---');
-------------------------------------------------
------ Payload ---
-------------------------------------------------
apex_json.parse(l_token.payload);
l_keys := apex_json.get_members('.');
dbms_output.put_line('numero oggetti:' ||l_keys.count);
for j in 1 .. l_keys.count loop
sys.dbms_output.put_line(l_keys(j)||'='||apex_json.get_varchar2(l_keys(j)));
if j<l_keys.count then
l_l_keys:=l_keys(j)||'='||apex_json.get_varchar2(l_keys(j));
end if;
end loop;
return 'OK'
END get_token_information;
Eseguendo la funzione ottiene quanto segue:
P_TOKEN VARCHAR2(200);
v_Return VARCHAR2(200);
BEGIN
P_TOKEN := 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.dyt0CoTl4WoVjAHI9Q_CwSKhl6d_9rhM3NrXuJttkao';
v_Return := GET_TOKEN_MAIL(
P_TOKEN => P_TOKEN
);
dbms_output.put_line(v_Return);
END;
L'output sarà il seguente:
Nessun commento:
Posta un commento