Как обновить VERIFY_PASSWORD_FUNCTION в oracle для пользователей, чтобы они сохраняли свой пароль в течение 1 дня, по крайней мере, до его изменения / изменения - PullRequest
0 голосов
/ 11 ноября 2018

Это одно из требований, когда клиенту необходимо, чтобы пользователи Oracle не меняли его пароль очень скоро, поэтому им нужно сохранить его как минимум за один день до его изменения. Поэтому его нельзя изменить в тот же день, когда мы должны обновить код VERIFY_PASSWORD_FUNCTION, чтобы установить минимальный срок действия пароля 1 день.

1 Ответ

0 голосов
/ 11 ноября 2018

Добавить код ниже в функции "VERIFY_PASSWORD_FUNCTION":

CREATE OR REPLACE FUNCTION "SYS"."VERIFY_PASSWORD_FUNCTION" 
(username varchar2,
password varchar2,
old_password varchar2)
RETURN boolean IS
last_change sys.user$.ptime%type;
minimum_age number :=1;
userexist integer;
begin
-- Set minimum password age 
select count(*) into userexist from sys.user$ where name=username;
if (userexist != 0) then
    select ptime into last_change from sys.user$ where name=username;
    if sysdate - last_change < minimum_age then
        raise_application_error(-20010, 'Password changed too soon');
    END IF; 
end if;
end;
/

Из приведенного выше кода вы должны добавить только переменные и логику.

Вот тестовый пример:

SQL> create user TEST11 identified by asdfhe#24HyrE profile USERS;

User Created.

SQL> alter user test11 identified by asdfhe#24HyrWW;
alter user test11 identified by asdfhe#24HyrWW
*
ERROR at line 1:
ORA-28003: password verification for the specified password failed
ORA-20010: Password changed too soon

SQL> 

SQL> select name,ptime from user$ where name='TEST11';

NAME                           PTIME
------------------------------ ---------
TEST11                         08-NOV-18

SQL> update user$ set ptime='03-Nov-18' where name='TEST11';

1 row updated.

SQL> select name,ptime from user$ where name='TEST11';

NAME                           PTIME
------------------------------ ---------
TEST11                         03-NOV-18

SQL> commit;

Commit complete.

SQL> alter user test11 identified by asdfhe#24HyrWW;

User altered.

SQL>

Поскольку мы не можем изменить пароль в течение того же дня, мы обновили значение ptime для проверки и снова попытались изменить пароль для пользователя Test11.

...