Eine Methode ohne "The Secure External Password Store" (was auch immer das sein mag) ist das Hinzufügen einer RAW(16)-Spalte zur Tabelle, um einen gehashten Benutzernamen und ein Passwort zu speichern:
alter table mytable add password raw(16);
Speichern Sie dann den gehashten Benutzernamen und das Passwort wie folgt darin:
insert into mytable (username, password, ...)
values (:username, dbms_obfuscation_toolkit.md5
(input => utl_i18n.string_to_raw
(upper(:username)||:password))
);
Wenn ein Benutzer dann versucht, sich mit einem Benutzernamen und einem Passwort anzumelden, können Sie diese wie folgt überprüfen:
select 'OK'
from mytable
where username = :username
and password = dbms_obfuscation_toolkit.md5
(input => utl_i18n.string_to_raw
(upper(:username)||:password));
Auf diese Weise kann niemand herausfinden, wie das gespeicherte Passwort lautet (außer durch Brute Force).