Cerca nel blog

mercoledì 12 dicembre 2012

Autenticazione Custom in Oracle Apex - Custom Authentication

Le modalità di autenticazione per accedere alle web application sviluppate mediante Oracle Apex sono sostanzialmente le tre seguenti:
- Autenticazione mediante user/credenziali di Oracle Apex
- Autenticazione mediante utenti di Database
- Custom Authentication mediante credenziali di accesso memorizzate in tabella di database.
In questo breve tutorial parleremo della Custom Authentication che risulta utile in diverse realizzazioni di web app per profilare l'accesso all'applicazione mediante le credenziali di utenti memorizzati in tabella di Database.
Realizziamo quindi nello schema del Database, dove punta la nostra Workspace, la tabella utenti nella quale verranno memorizzati i dati relativi agli utenti che hanno diritto di accesso alla generica web application.
Possiamo agevolmente creare la tabella utenti mediante l'interfaccia di SQL Workshop e la sezione Object Navigator--> create table
Di seguito lo script relativo al DDL della nostra tabella utenti:

CREATE TABLE  "UTENTI" 
   ( "ID_UTENTE" NUMBER(5,0) NOT NULL ENABLE, 
 "COGNOME" VARCHAR2(50), 
 "NOME" VARCHAR2(30), 
 "USERNAME" VARCHAR2(30) NOT NULL , 
 "PASSWORD" VARCHAR2(10) NOT NULL , 
  CONSTRAINT "UTENTI_PK" PRIMARY KEY ("ID_UTENTE") ENABLE
   )

Definiamo anche la funzione plsql myauth che ci consente di verificare se la combinazione username/password che l'utente inserisce nella fase di login si congrua rispetto alle credenziali memorizzate nella tabella Utenti e quindi consenta o meno l'accesso alla web application:

create or replace FUNCTION myauth (
p_username IN VARCHAR2,
p_password IN VARCHAR2
)
RETURN BOOLEAN
IS
conta NUMBER;
BEGIN
SELECT COUNT(*
into conta 
from utenti 
WHERE Username p_username 
AND Password p_password;
IF conta THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END;

Creiamo una generica web application che chiameremo CustomApp ed  all'interno della nostra applicazione definiamo una pagina di tipo Blank che sarà raggiunta dopo il login nel caso le credenziali saranno, mediante la funzione myauth, autenticate valide.
Step successivo sarà quello di modificare all'interno della web application CustomApp l'authentication schema, sarà quindi necessario selezionare la web application CustomApp, cliccare su Shared Components  e quindi selezionare Authentication Schemes:

 












Definiamo quindi un nuovo authentication schemes che chiameremo myauth











e nel wizard di creazione nella sezione Create Authentication Scheme inseriamo sotto la voce authentication function il seguente codice:

 return myauth

















Procediamo quindi nel completare wizard cliccando sempre su next sino al termine della creazione del nuovo schema di autenticazione.
Adesso come step finale non resta che associare alla web application CustomApp il nuovo schema di autenticazione, per fare ciò sempre da Shared Components --> Authenitication Schemes e selezioniamo la tab Change Currents e dal menu a discesa selezioniamo la voce myauth :














Eseguendo la web application CustomApp  avremo quindi in fase di login il controllo delle credenziali effettuate attraverso il nuovo schema di autenticazione myauth.
Questa modalità di autenticazione può essere resa fortemente più sicura utilizzando delle funzioni per criptare le password (come può ad esempio essere un algoritmo MD5), in tale circostanza memorizziamo password cifrate nel campo password della  tabella Utenti rendendo la nostra applicazione più sicura e robusta in fase di autenticazione.

Al prox post su Oracle Apex.


Salvatore Bartucci

Nessun commento:

Posta un commento