Je ne pense pas que la base de données Oracle vous donne une API pour ce faire. Un truc que vous pourriez utiliser serait d'utiliser un lien de base de données de bouclage pour le vérifier. Comme ceci :
DECLARE
p_username VARCHAR2 (30) := 'MMCP'; -- Change to the user whose password you are validating
p_test_password VARCHAR2 (30) := 'NOT_MY_PASSWORD';
p_loopback_connection_string VARCHAR2(80) := 'ORCLQA'; -- Change this for your environment
BEGIN
BEGIN
EXECUTE IMMEDIATE q'[drop database link password_test_loopback]';
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
EXECUTE IMMEDIATE
'create database link password_test_loopback connect to "' || p_username || '" identified by "' || p_test_password || '" using ''' || p_loopback_connection_string || '''';
EXECUTE IMMEDIATE q'[SELECT * FROM [email protected]_test_loopback]';
EXECUTE IMMEDIATE q'[drop database link password_test_loopback]';
dbms_output.put_line('Password is good');
EXCEPTION WHEN OTHERS THEN
IF SQLCODE = -1017 THEN
DBMS_OUTPUT.PUT_LINE('Password is wrong');
ELSE
raise;
END IF;
END;
Des options plus avancées consisteraient à trouver un moyen d'utiliser l'authentification unique / LDAP pour votre authentification Oracle. Ensuite, votre problème devient :comment valider un nom d'utilisateur/mot de passe dans mon dictionnaire LDAP, ce qui est beaucoup plus facile.