Weblogic securizado con el proveedor SQLAuthenticator

En un artículo anterior vimos como asegurar un Web Service con autenticación básica (esto podría servir para cualquier página en nuestra aplicación). Esto lo hacíamos creando usuarios en el DefaultAuthenticator de Weblogic (user).

Hoy vamos a crear un SQLAuthenticator en Weblogic, de forma que tome esos usuarios y grupos de la base de datos.

Lo primero que vamos a hacer es crear un Data Source, donde se alojará nuestra base de datos de usuarios, en la consola de Weblogic. Vamos a base_domain > Services > JDBC Data Soources > New, y configuramos con los siguientes datos:

  1. Nombre: school
  2. Nombre JNDI: school
  3. Nombre DB: xe
  4. Host: 192.168.0.7
  5. Port: 1521
  6. User/pass: school/school
  7. Seleccionar los Servers a los que aplicar este DataSource: AdminServer.

Probamos la conexión como vemos en la figura:

Creating Data Source

Ahora hay que crear en la BBDD las tablas que van a alojar grupos/usuarios y los van a relacionar. Para ello se ha creado el script sql:

CREATE TABLE USERS (
    U_NAME VARCHAR(200) NOT NULL,
    U_PASSWORD VARCHAR(50) NOT NULL,
    U_DESCRIPTION VARCHAR(1000));
 
ALTER TABLE USERS
   ADD CONSTRAINT PK_USERS
   PRIMARY KEY (U_NAME);
 
CREATE TABLE GROUPS (
    G_NAME VARCHAR(200) NOT NULL,
    G_DESCRIPTION VARCHAR(1000) NULL);
 
ALTER TABLE GROUPS
   ADD CONSTRAINT PK_GROUPS
   PRIMARY KEY (G_NAME);
 
CREATE TABLE GROUPMEMBERS (
    G_NAME VARCHAR(200) NOT NULL,
    G_MEMBER VARCHAR(200) NOT NULL);
 
ALTER TABLE GROUPMEMBERS
   ADD CONSTRAINT PK_GROUPMEMS
   PRIMARY KEY (
      G_NAME,
      G_MEMBER
   );
 
ALTER TABLE GROUPMEMBERS
   ADD CONSTRAINT FK1_GROUPMEMBERS
   FOREIGN KEY ( G_NAME )
   REFERENCES GROUPS (G_NAME)
   ON DELETE CASCADE;

Podemos ejecutarlo con la perspectiva de base de datos de Eclipse, ejecutando la opción “Execute All” del menú contextual del editor SQL:

Execute Script in Eclipse

Luego en la consola de Weblogic vamos a base_domain > Security Realms > myrealm > Providers > New. Donde configuraremos el proveedor de autenticación SQL:

  1. Nombre y tipo: SQLAuthenticator

Luego, en sus propiedades, en la pestaña Provider Specific, configuramos lo siguiente:

  1. Data Source Name: school
  2. Group MemberShip Searching: limitado a 10 para evitar situaciones en las que grupo A pertenece al B y viceversa.
  3. Plain Text Passwords Enabled: puede estar bien para hacer pruebas con contraseñas sin cifrar, pero no es recomendable en producción.

Create SQLAuthenticator

OJO!!: hay que tener en cuenta que la secuencia de autenticación en el servidor sigue requiriendo la autenticación en el DefaultAuthenticator. En base_domain > Security Realms > myrealm > Providers > Providers > DefaultAuthenticator, poner:

  1. Control Flag: SUFFICIENT. Para que no requiera obligatoriamente la autenticación de este provider (si este paso lo damos mal, podemos suprimir el acceso a consola del servidor).

Habrá que reiniciar (mejor, stop y luego start, con el control de eclipse) el servidor para que los cambios tengan efecto. Ahora podéis ejecutar el ejemplo Web Service con autenticación básica, con un usuario que hayáis creado con el proveedor SQL.

One thought on “Weblogic securizado con el proveedor SQLAuthenticator

  1. me parece excelente tutorial pero en la parte de Control Flag SUFICIENT a que te refieres??? Te refieres a que cuando el server WebLogic revisara la autenticaciòn en el momento que arranca?? realmente no comprendo este punto, podrias aclarar?

    Y en el punto “Plain Text Passwords Enabled” significa que si lo checkeo no cifrarà las contraseñas de los usuarios al momento de logearse???

    De antemano gracias espero tus respuestas

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>