Un metodo senza utilizzare "The Secure External Password Store" (qualunque esso sia) consiste nell'aggiungere una colonna RAW(16) alla tabella per memorizzare un nome utente e una password con hash:
alter table mytable add password raw(16);
Quindi archivia il nome utente e la password con hash in questo modo:
insert into mytable (username, password, ...)
values (:username, dbms_obfuscation_toolkit.md5
(input => utl_i18n.string_to_raw
(upper(:username)||:password))
);
Quindi, quando un utente tenta di accedere con un nome utente e una password, puoi controllarli in questo modo:
select 'OK'
from mytable
where username = :username
and password = dbms_obfuscation_toolkit.md5
(input => utl_i18n.string_to_raw
(upper(:username)||:password));
In questo modo nessuno può scoprire qual è la password memorizzata (a parte la forza bruta).