Sunday, 17 May 2009

Provider di autenticazione RDBMS offerti da Weblogic Server 10.3


In questo articolo vedremo come configurare ed utilizzare due meccanismi di autenticazione RDBMS (ovvero in cui le informazioni riguardanti utenti, gruppi e appartenenza degli utenti ai rispettivi gruppi, sono memorizzate su tabelle DB) offerti da WebLogic Server 10.3. Per una panoramica completa di queste feature di WLS si veda la documentazione ufficiale Oracle-BEA.


Gli authentication provider di cui parleremo sono:



  • SQL Authenticator

  • Read Only SQL Authenticator

Entrambi i provider offrono le funzionalità base di autenticazione, ma il primo offre anche la possibilità di gestire le utenze (creazione/eliminazione di utenti e ruoli, modifica password, associazione/eliminazione di un utente ad un ruolo).



Per creare un authentication provider:



  • Accedere all'administration console di Weblogic Server

  • Sotto Security Realms, selezionare il security realm di default (myrealm) o un altro realm precedentemente definito

  • Quindi selezionare il tab Provider sottotab Authentication Selezionare New per creare un nuovo Authentication Provider

  • Dare un nome al nuovo provider e scegliere dalla combobox il tipo di authentication provider che si vuole creare (nel nostro caso SQL Authenticator)

Creazione Authentication Provider
Schermata di creazione provider


Per configurare il SQL Authenticator dalla console di amministrazione di WLS, seguire i seguenti passi:



  • Selezionare l'authentication provider appena creato

  • Tab Configuration sottotab Common

  • Impostare il control flag a SUFFICIENT affinchè l’autenticazione attraverso questo AP garantisca l’accesso alle risorse protette

Configurazione Auth. Provider
Configurazione Control Flag


E’ fondamentale che non solo il provider che stiamo configurando, ma TUTTI gli altri Auth. Provider (compresto il Default Authenticator) abbiano il control flag impostato a SUFFICIENT (e non REQUIRED) perché l’autenticazione del nostro provider fornisca l’accesso alle risorse protette.



  • La configurazione di un datasource (fornire il nome del data source, non il suo JNDI name) che punti allo schema contenente le tabelle di utenti, gruppi e group membership.

  • La scelta dell’algoritmo di cifratura delle password, necessario per la fase di creazione/modifica utente (solo SQL Authentication Provider).

  • Gli statement SQL necessari all’autenticazione e alla gestione di utenti, gruppi e group membership

Clipboard03



Una volta configurato l’Authentication Provider, così come dopo ogni modifica ai provider esistenti, occorre riavviare il dominio Weblogic.


Per i più "smanettoni", tutte le configurazioni sono riportate nel file config.xml nella cartella home del dominio:



Estratto di config.xml
Estratto di config.xml


Quindi, le modifiche possono essere anche apportate direttamente in config.xml (previo backup), con riavvio del dominio per renderle effettive.



Disabilitare account locking


Per evitare che, dopo un certo numero di tentativi falliti di autenticazione, l’utente venga "lockato" da Weblogic , occorre disabilitare il Lockout automatico :



  • Security Realms myrealm tab Configuration sottotab User Lockout

  • Desezionare il checkbox Lockout Enabled

  • Riavviare il dominio WLS



Disabilitare account locking
Disabilitare account locking



Read-Only SQL Authenticator


La configurazione del Read-Only SQLAuthenticator è identica a quella relativa al SQL Authenticator, se non per la parte relativa agli statement SQL: essendo le funzionalità di quest'ultimo authenticator ridotte rispetto al precedente, gli statement da definire saranno in numero inferiore.


Esempio


Per rendere le cose più semplici, partiamo da un esempio concreto di configurazione del Read-Only SQL Authenticator. Nel nostro esempio le informazioni sugli utenti si trovano su 3 tabelle (Oracle) USERS, ROLES, e  USER_ROLE_MAPPING:


tabella USERS
Tabella USERS

Tabella ROLES
Tabella ROLES

Tabella USER_ROLE_MAPPING
Tabella USER_ROLE_MAPPING

Essendo le informazioni memorizzate in tabelle con la struttura sopra descritta, gli statement SQL si adattano di conseguenza:



SQL Get Users Password:


SELECT password FROM users WHERE username = ?

SQL User Exists:

SELECT username FROM users WHERE username = ?


SQL List Users:

SELECT username FROM users WHERE username LIKE ?

SQL List Groups:

SELECT rolename FROM roles WHERE rolename LIKE ?

SQL Group Exists:

SELECT rolename FROM roles WHERE rolename = ?


SQL Is Member:


SELECT r.rolename FROM user_role_mapping g ,roles r,users u WHERE g.users_userid = u.userid and g.roles_roleid = r.roleid and u.username = ?


SQL List Member Groups:


SELECT r.rolename FROM user_role_mapping g ,roles r,users u WHERE g.users_userid = u.userid and g.roles_roleid = r.roleid and u.username like ?

SQL Get User Description:

SELECT description FROM users WHERE username = ?

SQL Get Group Description:

SELECT rolename FROM roles WHERE rolename = ?

1 comment:

  1. grazie mille.... guide ottimamente realizzata

    ReplyDelete