У меня есть следующая бизнес-проблема, которую нужно решить в большом устаревшем приложении, написанном на PL / SQL и Oracle Forms 6i:
Не разрешать пользователям входить в систему, используя свои учетные записи базы данных.
В целом приложение имеет около 50 пользователей, которые используют свои учетные записи в базе данных. Отдел аудита не позволяет пользователям знать пароли своих учетных записей в базе данных.
Переписывание приложения для использования новой логики прав пользователя (с использованием таблицы, такой как USERS, только 1 пользователь базы данных и т. Д.) Выходит за рамкивопрос, так как это слишком много работы.
Я подумал о следующем решении для использования существующих пользователей базы данных:
Создайте таблицу USERS с именами пользователей и новыми паролями и каким-то образом используйте прокси-пользователя. В пакете приложение проверит, соответствует ли предоставленный пароль таблице USERS, а затем подключится как 1 из 50 пользователей базы данных - так что вся логика приложения и права пользователя могут остаться прежними.
Но естьодна проблема с этим обходным путем - вы не можете использовать «соединение» в пакете. Поэтому я не могу его использовать.
begin
IF
p_in_user == USER2 AND p_in_pass == XXX
THEN
EXECUTE IMMEDIATE 'conn USER2/Password123'; -- doesn't work, using a proxy neither
END IF;
END;
У кого-нибудь есть идеи?