Mostrando entradas con la etiqueta weblogic. Mostrar todas las entradas
Mostrando entradas con la etiqueta weblogic. Mostrar todas las entradas

6 ago 2013

Obtaining user LDAP groups from Weblogic / WebCenter security provider

Sometimes you need to obtain the groups where a user is member. You can check if a user is in a group with a common and simple EL:

#{securityContext.userInRole['Administrators']}

This EL will return true if the user is a member of that group.


In other cases you need the full list of groups where users belongs to, you can achieve this purpose with 2 different solutions.

Weblogic mode


    /**
     * This method returns the default IdentityStore of Weblogic
     * @return
     * @throws JpsException
     */
    private static IdentityStore getIdentityStore() throws JpsException
    {
        JpsContextFactory ctxf = JpsContextFactory.getContextFactory();
        JpsContext ctx = ctxf.getContext();
        IdentityStoreService storeService = ctx.getServiceInstance(IdentityStoreService.class);
        return storeService.getIdmStore();
    }

    /**
     * This method returns a list of the groups where the user belongs to
     * @param userName
     * @return
     */
    public List getRolesFromLDAP()
    {
        List rolesGranted = new ArrayList();
        IdentityStore is = null;
        try
        {
            is = getIdentityStore();
            
            //Getting current user
            ADFContext ctxt = ADFContext.getCurrent();
            SecurityContext sctxt = ctxt.getSecurityContext();

            User userAux = is.searchUser(sctxt.getUserPrincipal());
            RoleManager rm = is.getRoleManager();
            SearchResponse response = rm.getGrantedRoles(userAux.getPrincipal(), false);
            
            while (response.hasNext())
            {
                String name = response.next().getName();
                LOG.info("Añadiendo el rol:" + name);
                rolesGranted.add(name);
            }
            
        }
        catch (Exception e)
        {
            LOG.severe("Error obteniendo los grupos del usuario", e);
        }
        
        return rolesGranted;
    }


WebCenter mode


    public List getRolesWebCenter() throws WCSecurityException
    {
        List roles = new ArrayList();
        ADFContext ctxt = ADFContext.getCurrent();
        SecurityContext sctxt = ctxt.getSecurityContext();
        
        Collection collection = WebCenterSecurityUtils.getEnterpriseRoles(sctxt.getUserName());
        
        for (Principal user : collection)
        {
            String userName = user.getName();
            LOG.info("Role:" + userName);
            roles.add(userName);
        }
        
        return roles;
    }

Here is for download a sample project with this two samples.

And this is a capture of the results


12 jun 2012

Installing Weblogic 10.3.6 in command line mode

A couple of days ago I was installing a WLS PS5 for a WebCenter Content installation. Im using linux 64bit version and found an annoying bug.

If you start the installation in GUI mode, the wizard will ask you for the oracle support mail and password. I tried several times to skip that step, but the installation does not allow any action to bypass it.

So my last chance, was the installation by command line, these are the steps of the complete process:

[oracle@owc WLS]$ java -d64 -jar wls1036_generic.jar -mode=console
Extracting 0%....................................................................................................100%





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

Welcome:
--------

This installer will guide you through the installation of WebLogic 10.3.6.0.
Type "Next" or enter to proceed to the next prompt.  If you want to change data entered previously, type "Previous".  You may quit the installer at any time by typing "Exit".




Enter [Exit][Next]>





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

Choose Middleware Home Directory:
---------------------------------

    "Middleware Home" = [Enter new value or use default
"/home/oracle/Oracle/Middleware"]




Enter new Middleware Home OR [Exit][Previous][Next]> /oracle/middleware





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

Choose Middleware Home Directory:
---------------------------------

    "Middleware Home" = [/oracle/middleware]

Use above value or select another option:
    1 - Enter new Middleware Home
    2 - Change to default [/home/oracle/Oracle/Middleware]




Enter option number to select OR [Exit][Previous][Next]>





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

Register for Security Updates:
------------------------------

Provide your email address for security updates and  to initiate configuration manager.

   1|Email:[]
   2|Support Password:[]
   3|Receive Security Update:[Yes]



Enter index number to select OR [Exit][Previous][Next]> 3





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

Register for Security Updates:
------------------------------

Provide your email address for security updates and  to initiate configuration manager.

    "Receive Security Update:" = [Enter new value or use default "Yes"]



Enter [Yes][No]? No





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

Register for Security Updates:
------------------------------

Provide your email address for security updates and  to initiate configuration manager.

    "Receive Security Update:" = [Enter new value or use default "Yes"]


    ** Do you wish to bypass initiation of the configuration manager and
    **  remain uninformed of critical security issues in your configuration?


Enter [Yes][No]? Yes





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

Register for Security Updates:
------------------------------

Provide your email address for security updates and  to initiate configuration manager.

   1|Email:[]
   2|Support Password:[]
   3|Receive Security Update:[No]



Enter index number to select OR [Exit][Previous][Next]>




<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

Register for Security Updates:
------------------------------

Provide your email address for security updates and  to initiate configuration manager.

   1|Email:[]
   2|Support Password:[]
   3|Receive Security Update:[No]



Enter index number to select OR [Exit][Previous][Next]>





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

Choose Install Type:
--------------------

Select the type of installation you wish to perform.

 ->1|Typical
    |  Install the following product(s) and component(s):
    | - WebLogic Server
    | - Oracle Coherence

   2|Custom
    |  Choose software products and components to install and perform optional
    |configuration.





Enter index number to select OR [Exit][Previous][Next]>





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

JDK Selection (Any * indicates Oracle Supplied VM):
---------------------------------------------------

JDK(s) chosen will be installed.  Defaults will be used in script string-substitution if installed.

   1|Add Local Jdk
   2|/oracle/jrockit[x]



   *Estimated size of installation:  690.2 MB


Enter 1 to add or >= 2 to toggle selection  OR [Exit][Previous][Next]> 2





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

JDK Selection (Any * indicates Oracle Supplied VM):
---------------------------------------------------

JDK(s) chosen will be installed.  Defaults will be used in script string-substitution if installed.

   1|Add Local Jdk
   2|/oracle/jrockit[ ]



   *Estimated size of installation:  690.2 MB


Enter 1 to add or >= 2 to toggle selection  OR [Exit][Previous][Next]> 2





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

JDK Selection (Any * indicates Oracle Supplied VM):
---------------------------------------------------

JDK(s) chosen will be installed.  Defaults will be used in script string-substitution if installed.

   1|Add Local Jdk
   2|/oracle/jrockit[x]



   *Estimated size of installation:  690.2 MB


Enter 1 to add or >= 2 to toggle selection  OR [Exit][Previous][Next]>





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

Choose Product Installation Directories:
----------------------------------------

Middleware Home Directory: [/oracle/middleware]

Product Installation Directories:


   1|WebLogic Server: [/oracle/middleware/wlserver_10.3]
   2|Oracle Coherence: [/oracle/middleware/coherence_3.7]




Enter index number to select OR [Exit][Previous][Next]>





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

The following Products and JDKs will be installed:
--------------------------------------------------

    WebLogic Platform 10.3.6.0
    |_____WebLogic Server
    |    |_____Core Application Server
    |    |_____Administration Console
    |    |_____Configuration Wizard and Upgrade Framework
    |    |_____Web 2.0 HTTP Pub-Sub Server
    |    |_____WebLogic SCA
    |    |_____WebLogic JDBC Drivers
    |    |_____Third Party JDBC Drivers
    |    |_____WebLogic Server Clients
    |    |_____WebLogic Web Server Plugins
    |    |_____UDDI and Xquery Support
    |    |_____Evaluation Database
    |_____Oracle Coherence
         |_____Coherence Product Files

    *Estimated size of installation: 690.3 MB




Enter [Exit][Previous][Next]>
May 30, 2012 6:04:16 PM java.util.prefs.FileSystemPreferences$2 run
INFO: Created user preferences directory.





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

Installing files..

0%          25%          50%          75%          100%
[------------|------------|------------|------------]
[***************************************************]


Performing String Substitutions...





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

Configuring OCM...

0%          25%          50%          75%          100%
[------------|------------|------------|------------]
[***************************************************]


Creating Domains...





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

Installation Complete


Congratulations! Installation is complete.


Press [Enter] to continue or type [Exit]>





<-------------------- Oracle Installer - WebLogic 10.3.6.0 ------------------->

Clean up process in progress ...
[oracle@owc WLS]$

11 jun 2012

Instalación de WebCenter en Cluster (parte 2)

Nuestra segunda parte del manual implica extender el dominio para incluir los nodos de WebCenter Content y Portal.

Parte 1 (aquí)

Accedemos a la herramienta de configuración de dominio:
cd /oracle/middleware/oracle_common/common/bin
./config.sh

Extensión del dominio

Selecciono el dominio a extender


Selecciono los productos a añadir


Comprueba los accesos a la BB.DD con los esquemas necesarios (previamente creados a través de rcu)


 Definimos configurar opcionalmente los siguientes parámetros






Creamos la configuración de máquinas UNIX (que no de máquinas)


Especificamos como se repartirán los nodos manejados


Las librerías necesarias para AdminServer, por defecto nos preselecciona más de las necesarias. Este listado muestras las reales:

oracle.bi.jbips(11.1.1,0.1)                
oracle.bi.composer(11.1.1,0.1)                
oracle.bi.adf.model.slib(1.0,11.1.1.2.0)                
oracle.bi.adf.view.slib(1.0,11.1.1.2.0)                
oracle.bi.adf.webcenter.slib(1.0,11.1.1.2.0)                
oracle.wsm.seedpolicies(11.1.1,11.1.1)                
oracle.jsp.next(11.1.1,11.1.1)                
oracle.dconfig-infra(11,11.1.1.1.0)                
orai18n-adf(11,11.1.1.1.0)                
oracle.adf.dconfigbeans(1.0,11.1.1.2.0)                
oracle.pwdgen(11.1.1,11.1.1.2.0)                
oracle.jrf.system.filter                
adf.oracle.domain(1.0,11.1.1.2.0)                
adf.oracle.businesseditor(1.0,11.1.1.2.0)                
oracle.adf.management(1.0,11.1.1.2.0)                
adf.oracle.domain.webapp(1.0,11.1.1.2.0)                
jsf(1.2,1.2.9.0)                
jstl(1.2,1.2.0.1)                
UIX(11,11.1.1.1.0)                
ohw-rcf(5,5.0)                
ohw-uix(5,5.0)                
oracle.adf.desktopintegration.model(1.0,11.1.1.2.0)                
oracle.adf.desktopintegration(1.0,11.1.1.2.0)                
oracle.webcenter.skin(11.1.1,11.1.1)                
oracle.bpm.mgmt(11.1.1,11.1.1)                
emai                
oracle.webcenter.composer(11.1.1,11.1.1)                
emas                
emcore  
 


La librería JOC sólo se especifica en los clústeres



Ahora ya tenemos finalizado la extensión del dominio.

Desactivando la verificación de HostName

Accedemos a la consola de Weblogic y vamos a la siguiente página: Entorno > Servidores.

Por cada servidor accedemos a sus propiedades y en la pestaña SSL en la zona de "avanzado" y desactivamos la verificación de host.


Realizamos esta operación en todos los nodos manejados que existan.

Empaquetando la configuración y exportandola al nodo 2 

Ahora utilizamos el siguiente comando para empaquetar la configuración del servidor:

OWC1> cd ORACLE_COMMON_HOME/common/bin

OWC1> ./pack.sh -managed=true -domain=/oracle/middleware/user_projects/domains/dev_domain -template=edgdomaintemplate.jar -template_name=edgdomain_template

copiamos el fichero edgdomaintemplate.jar al nodo 2 (OWC2) y procedemos a su descompresión:

OWC2> cd ORACLE_COMMON_HOME/common/bin

OWC2> ./unpack.sh -domain=/oracle/middleware/user_projects/domains/dev_domain -template=edgdomaintemplate.jar -app_dir=/oracle/middleware/user_projects/applications/dev_domain

Arrancando NodeManager en el nodo 2 (OWC2)

OWC2> cd ORACLE_COMMON_HOME/common/bin 
OWC2> ./setNMProps.sh
OWC2> cd WL_HOME/server/bin 
OWC2> ./startNodeManager.sh

Arrancando los nodos manejados

Vamos a la parte de servidores y seleccionamos uno de los nodos manejados e iniciamos su arranque.


Revisamos las trazas del proceso de arranque para verificar que el arranque ha sido correcto.

Fuentes empleadas:

En próximas entradas haremos ejemplos de scripts de arranque para los procesos de weblogic durante el arranque del sistema.

Saludos!

8 mar 2012

Instalación de WebCenter en Cluster (parte 1)

Hace unas semanas estuve instalando un entorno WebCenter para nuestras pruebas, desarrollos y demás trasteos.


Lo normal es que cuando se trate de un entorno de desarrollo, lo instalemos todo en un mismo equipo sin pensar en ningún momento en tener un cluster o repartir los nodos manejados por distintas máquinas.


Pero WebCenter PS4 necesita unos recursos de memoria RAM muy elevados que no solemos tener disponibles en nuestros equipos. En otras ocasiones usé los servicios en la nube de Amazon que te proporcionan equipos de grandes recursos de memoria por un precio relativamente bajo.


Pero para esta ocasión, no íbamos a instalar en "la nube", ya que son entornos de pruebas, con muy poco uso y que podíamos montar en nuestra oficina. El único inconveniente es que el departamento de sistemas no me daba ninguna máquina virtual de más de 4Gb de RAM.


La única solución posible era repartir los nodos manejados por varias máquinas, y tener la base de datos también separada, en total 3 máquinas.




OWC1 y OWC2 son las máquinas que tendrán la instalación de todos los nodos de WebCenter.


OWCDB es la base de datos con los esquemas necesarios para WebCenter ya creados con la herramienta rcu (más información aquí).


Instalación del Software


Nuestra instalación no tiene una unidad compartida, por lo que estamos obligados a instalar TODO el software en aquellas máquinas que componen nuestro dominio, en este caso, en las máquinas OWC1 y OWC2 realizamos la instalación de:

  • JRockit
  • Weblogic
  • ECM
  • WebCenter


Hay que hacer la instalación con los mismos usuarios, permisos y directorios, en mi caso todo cae en el directorio /oracle/middleware.


Instalación de AdminServer y creación de dominio


En primer lugar debemos de crear el dominio y configurar únicamente el AdminServer, que en nuestro caso está en la máquina #OWC1.


Ejecutamos la herramienta de configuración:

cd /oracle/middleware/oracle_common/common/bin
./config.sh

Seguimos el Wizard como muestran las siguientes capturas de pantalla:






























Una vez finalizado el Wizard de creación de dominio, procedemos al arranque de Weblogic para que se creen los directorios del AdminServer.

cd /oracle/middleware/user_projects/domains/dev_domain
./startWeblogic.sh

Finalizado el arranque veremos la traza que indica su estado en "RUNNING"

<Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>

En este punto cerramos la ejecución con las teclas CTRL + C y vamos al siguiente paso.

Configuración del fichero boot.properties

Ahora accedemos al directorio security, en caso de no existir lo creamos.

cd /oracle/middleware/user_projects/domains/dev_domain/servers/AdminServer/security
vi boot.properties

Incluimos los datos de usuario y contraseña definidos durante la creación del dominio dentro del fichero properties.

username=weblogic 
password=<Password>

Iniciamos NodeManager

Especificamos las propiedades de entorno:

cd /oracle/middleware/oracle_common/common/bin
./setNMProps.sh

Ahora ejecutamos el NodeManager:

cd /oracle/middleware/wlserver_10.3/server/bin/
export JAVA_OPTIONS=-DDomainRegistrationEnabled=true
./startNodeManager.sh

La variable DomainRegistrationEnabled=true sólo se aplica al NodeManager que va a tener el AdminServer, en este caso sólo el de la máquina #OWC1. Es más cómodo modificar el script startNodeManager.sh para que automáticamente ponga esa variable en esta máquina del cluster.

Ahora abrimos otro terminal y con el que ejecutamos de nuevo el arranque del servidor de aplicaciones.

cd /oracle/middleware/user_projects/domains/dev_domain
./startWeblogic.sh


Accedemos a la consola de administración para cambiar la contraseña del NodeManager http://owc1:7001/console (dev_domain-> seguridad -> general, ajustes avanzados).




Con el cambio realizado, paramos el servidor Weblogic (CTRL + C) y paramos el NodeManager en la otra consola (CTRL + C).

Procedemos al arranque de nuevo de NodeManager:

cd /oracle/middleware/wlserver_10.3/server/bin/
export JAVA_OPTIONS=-DDomainRegistrationEnabled=true
./startNodeManager.sh

En otra consola arranco la consola de scripting de Weblogic:

cd /oracle/middleware/oracle_common/common/bin/
./wlst.sh

Conectamos al NodeManager y arrancamos el AdminServer para verificar que todo está correctamente configurado.

wls:/offline>nmConnect('oracle_nodemg','Oracle11g','owc1','5556','dev_domain','/oracle/middleware/user_projects/domains/dev_domain') 
wls:/nm/dev_domain> nmStart('AdminServer') 
wls:/nm/dev_domain> nmDisconnect()
wls:/offline> exit()

Si todo ha ido bien, el AdminServer estará de nuevo arrancado y podremos acceder a la consola de administración: http://owc1:7001/console

Desactivando la verificación de Hostname

Dado que no vamos a usar el NodeManager en modo seguro, vamos a proceder a quitar la verificación de hostname para el AdminServer.


  1. Accedemos a la consola de administración http://owc1:7001/console
  2. Pulsamos sobre "Bloquear y editar" para poder realizar los cambios
  3. Seleccionamos "Entorno"
  4. Seleccionamos "Servidores"
  5. Selecciono el AdminServer
  6. Vamos a la pestaña de SSL
  7. Expando las opciones Avanzadas
  8. Ponemos la verificación de host a "ninguna"
  9. Salvamos
  10. Salvamos y activamos los cambios. 


 Los cambios no serán efectivos hasta que reiniciemos el nodo manejado del AdminServer, por ello volvemos a conectar por wlst para reiniciarlo.

cd /oracle/middleware/oracle_common/common/bin/
./wlst.sh


wls:/offline>nmConnect('oracle_nodemg','Oracle11g','owc1','5556','dev_domain','/oracle/middleware/user_projects/domains/dev_domain')
wls:/nm/dev_domain> nmKill('AdminServer')
wls:/nm/dev_domain> nmStart('AdminServer') wls:/nm/dev_domain> nmDisconnect()
wls:/offline> exit()

Con esto se termina la primera parte del tutorial, en la segunda veremos como ampliamos el dominio para incluir los productos de WebCenter y posteriormente propagamos la configuración del cluster a la máquina #OWC2

22 ago 2011

Autenticación de PROXY NTLM en Weblogic

Recientemente estuve viendo como un simple proxy de salida de internet me estuvo dando problemas durante más de una semana para configurarlo en una aplicación web desplegada en Weblogic.


Recopilando un poco de información por internet por fin dimos con la clave para conseguir que la aplicación se conectara al exterior.


En primer lugar debemos de arrancar Weblogic con la variable de entorno PROXY_SETTINGS configurada. Esto hará que los script's de arranque del servidor de aplicaciones añaden dicha línea como parámetros de ejecución.


Ejemplo:

PROXY_SETTINGS="
-Dhttp.proxySet=true
-Dhttp.proxyHost=<proxy hostname o ip>
-Dhttp.proxyPort=<puerto proxy>
-Dhttp.proxyUser=<mi usuario>
-Dhttp.proxyPassword=<mi password>
-Dweblogic.webservice.transport.http.proxy.host=<proxy hostname o ip>
-Dweblogic.webservice.transport.https.proxy.host=<proxy hostname o ip>
-Dweblogic.webservice.transport.http.proxy.port=<puerto proxy>
-Dweblogic.webservice.transport.https.proxy.port=<puerto proxy>
-Dhttp.nonProxyHosts=\"localhost|127.0.0.1"
-DUseSunHttpHandler=true"



export PROXY_SETTINGS


De esta forma las variables de entorno están ya configuradas. Reiniciamos nuestro Weblogic o las ponemos en el propio script de arranque y reiniciamos.


Aparte de la configuración de Weblogic nos vimos obligados a incluir un código en nuestra aplicación que reescribia el authenticator del proceso Java que estaba corriendo en la JVM. Este paso sólo es necesario si tu aplicación utiliza tecnología ADF.


Antes de realizar una llamada HTTP invocaba el siguiente método:

//Proxy Weblogic
Proxy.getInstance().setup();


El código de la clase Proxy es:

public class Proxy
{
  private static final Logger logger = Logger.getLogger(Proxy.class);
  private static Proxy instance = null;
  private boolean enabled = false;


  public Proxy()
  {
    super();
  }


  public static Proxy getInstance()
  {
    if (instance == null)
      instance = new Proxy();


    return instance;
  }


  public void setup()
  {
    String proxySet = System.getProperty("http.proxySet");


    if (proxySet != null && proxySet.equals("true") && enabled == false)
    {
      String user = System.getProperty("http.proxyUser");
      String password = System.getProperty("http.proxyPassword");


      Authenticator.setDefault(new MyAuthenticator(user, password));
      logger.info("Proxy activado:" + proxySet);
      logger.info("Proxy usuario:" + user);
      logger.info("Proxy password:" + password);
      enabled = true;
    }
  }


  class MyAuthenticator extends Authenticator
  {
    private String username;
    private String password;


    public MyAuthenticator(String username, String password)
    {
      this.username = username;
      this.password = password;
    }


    public PasswordAuthentication getPasswordAuthentication()
    {
      return new PasswordAuthentication(username, password.toCharArray());
    }
  }
}