User Logon Validation Trigger

  • Uploaded by: SHAHID FAROOQ
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View User Logon Validation Trigger as PDF for free.

More details

  • Words: 260
  • Pages: 2
User Logon Validation Trigger This tip comes from Babu Rangasamy, a Sr. Oracle Database Consultant, in Harrisburg, PA. This trigger verifies whether a user logging into the database is (pre)authorized to connect to the database using the approved client machine, client software, etc. -- connect as sys/***** CREATE TABLE authorize_users_tab( username VARCHAR2(30), osuser VARCHAR2(30), program VARCHAR2(64), machine VARCHAR2(64) ); ALTER TABLE authorize_users_tab ADD CONSTRAINT user_prog_mach_uk UNIQUE (username,osuser,program,machine); -----

Insert appropiate values into this table, so only the entered users will be permitted to connect to that database, query V$SESSION for correct info, data entered into the table are case sensitive.

insert into authorize_users_tab values ('SCOTT','DOMAIN\OSUSER','SQLPLUSW.EXE','DOMAIN\MACHINE'); insert into authorize_users_tab values ('TESTUSER','DOMAIN\OSUSER','SQLPLUSW.EXE','DOMAIN\MACHINE'); commit; CREATE OR REPLACE TRIGGER authorize_users_trig AFTER LOGON ON DATABASE ------------

Description: This trigger helps database administrators to control users logging into the database using various client tools and machines. List of USERNAME, OSUSER, PROGRAM and MACHINE entered in table AUTHORIZE_USERS_TAB will only be permitted to login into the database. Ref Oracle Bug No.2628258 and Doc No.2628258.8 in Metalink for using RTRIM(machine,CHR(0)) in the below code. Caveat: When a user tries to connect via SQL*Plus and if the trigger refuses connection, info about that session is shown as INACTIVE in V$SESSION, unless that user closes the SQL*Plus window/session.

DECLARE p_count NUMBER(1); BEGIN SELECT COUNT(*) INTO p_count FROM sys.authorize_users_tab WHERE UPPER(username||osuser||program||RTRIM(machine,CHR(0))) IN ( SELECT UPPER(username||osuser||program||RTRIM(machine,CHR(0))) FROM v$session ! WHERE au dsid = USERENV('sessionid') AND logon_time = ( SELECT MAX(logon_time) FROM v$session WHERE audsid = USERENV('sessionid')));

IF p_count = 0 THEN RAISE_APPLICATION_ERROR(-20001, '---> Sorry, Access Denied <---'); END IF; END ; /

Related Documents

Trigger
November 2019 31
Trigger
November 2019 30
Trigger
June 2020 22
Trigger
November 2019 31

More Documents from ""