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)
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
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
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:
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
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:
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 = ?
grazie mille.... guide ottimamente realizzata
ReplyDelete