Cataloga un token en la tabla wic_conf:wic_user_token_process para otorgar permiso de ejecución de un proceso a un usuario sobre una determinada base de datos, devolviendo la url que deberá invocarse para su ejecución.

La autentificación para la ejecución de procesos es un mecanismo simple y fácil de implementar alternativo a la invocación de servicios SOAP Service.

Para que el registro del token sea efectivo se requiere que el perfil de recursos del usuario sea mínimo, verificándose:

  1. El usuario debe tener password informada.
  2. El nivel de seguridad de la password debe ser Alto.
  3. No debe tener permiso para cambiar la password.
  4. No debe permitirse ningún intento fallido de login.
  5. No debe tener permisos para ejecutar roles de aplicación de Axional Studio comprometidos.
  6. No debe tener permiso de acceso a más de una base de datos.
  7. No debe tener permiso de acceso a la tool DBStudio.
  8. No debe tener permiso para ejecutar servicios SOAP.
  9. Debe tener definido role funcional.
  10. Debe tener definido role de seguridad SQL.
  11. Debe tener definido role transaccional.

Habilitar la autentificación de ejecución de procesos en el servidor.

Para disponer del servicio de autentificación de ejecución de procesos el servidor de aplicaciones debe tener definida la válvula de autentificación. En el fichero JAS/conf/server.xml habilitar:

Notas informativa

Copy
<!-- =================================================================

                Valve to allow N time process execution via tokens

                SEE wic_conf.wic_user_process_tokens

                ================================================================ -->
           <Valve className="deister.webstudio.login.TokenProcessValve" 
               lockedUrl="http://www.yahoo.com"
               expiredUrl="http://www.bing.com"
               />

Atributos opcionales para dirigir la respuesta ante incidencias de autentificación:

  • errorUrl Habilitar este atributo para dirigir la respuesta en caso de error de autentificación.
  • lockedUrl Habilitar este atributo para dirigir la respuesta en caso de que el token se encuentre bloqueado.
  • expiredUrl Habilitar este atributo para dirigir la respuesta en caso de que el token se encuentre caducado.

1 webapp.token.process.getNewURL

<webapp.token.process.getNewURL
    user='user'
    dbms='dbms'
    code='code'
    token-group='token-group'
>
    <expires> !
        <timestamp /> !
    </expires>
    <args> ?
        <arg
            type='type'
            name='name'
        > *
            <objeto /> !
        </arg>
    </args>
</webapp.token.process.getNewURL>

Exceptions

required attribute 'user' not defined

No se ha especificado el código del usuario.

required attribute 'dbms' not defined

No se ha especificado el código de la base de datos.

required attribute 'code' not defined

No se ha especificado el código del proceso.

required attribute 'token-group' not defined

No se ha especificado el grupo de token.

Example

Ejemplo de petición de confirmación para la aceptación o rechazo de una tarea.

El siguiente script catalogará y devolverá la url para que el usuario pueda aceptar o rechazar la petición.

Copy
<xsql-script name='get_token_process_response'>
    <body>
        <println>
            <webapp.token.process.getNewURL user='fcm' dbms='demo_sports' code='demo_token_process_response' token-group='DEMO'>
                <expires><date.timestamp dd='31' MM='3' yy='2014' hh='16' mm='00' /></expires>
                <args>
                    <arg type='string'>Confirmation Test</arg>
                    <arg type='boolean' name='RESPONSE' />
                </args>
            </webapp.token.process.getNewURL>
        </println>
    </body>
</xsql-script>

Output :

Copy
http://www.mydeister.com/servlet/jdbs_run/call?ptoken=BC8BDEDA4997FED6EDAF06913E0FADACADE95E8F97789B5F2243FDA6F6D89D7931CCE747A1E889E89562159BC81F92D5BD684A8C17DF19525AA735893698C96F&RESPONSE=

Valor registrado en XSQL Arguments (wic_conf:wic_user_token_process.token_xsql_args):

Copy
Confirmation Test|${RESPONSE}

Valor registrado en Arguments Type (wic_conf:wic_user_token_process.token_xsql_type):

Copy
1|16

Código de ejemplo que puede catalogar en el repositorio de programas XSQL para poder evaluar el test:

Copy
<xsql-script name="demo_token_process_response">

    <args>
        <arg name='p_comment'   type='string' />
        <arg name='p_response'  type='boolean' />
    </args>

    <body>

        <!-- ========================================================================== -->
        <!-- Resultados en tabla virtual v_efectos_anticipo                             -->
        <!-- ========================================================================== -->
        <if>
            <expr><p_response/></expr>
            <then>
                <set name='m_txt_response'>ACCEPTED.</set>
            </then>
            <else>
                <set name='m_txt_response'>REJECTED.</set>
            </else>
        </if>

        <!-- ========================================================================== -->
        <!-- Resultados en tabla virtual v_efectos_anticipo                             -->
        <!-- ========================================================================== -->
        <vtable name='v_type_test'>
            <column name='comment'      type='string' />
            <column name='response'     type='string' />
        </vtable>

        <vtable.insert name='v_type_test'>
            <p_comment/>
            <m_txt_response/>
        </vtable.insert>

        <!-- ========================================================================== -->
        <!-- Se bloquea el token                                                        -->
        <!-- ========================================================================== -->
        <set name='m_token'><webapp.token.getSessionToken /></set>
        <if>
            <expr><isnull><m_token/></isnull></expr>
            <then>
                <exception>Token de proceso inexistente para la sesión del usuario [<system.user.getCode/>].</exception>
            </then>
        </if>
        <webapp.token.process.setEnabled token='#m_token' enabled='false' />

        <!-- ========================================================================== -->
        <!-- Respuesta VTABLE                                                           -->
        <!-- ========================================================================== -->
        <return><v_type_test/></return>

    </body>
</xsql-script>

Modifique la url devuelta por el proceso que generó el hash, asignando las constantes que sean de su interés sobre las variables. En este ejemplo se preparan dos url con la misma base para cada una de las dos situaciones planteadas, ofreciendo al usuario las opciones posibles para aceptar y rechazar:

Copy
URL para aceptación:
http://SPIDER:100/servlet/jdbs_run/call?ptoken=BC8BDEDA4997FED6EDAF06913E0FADACADE95E8F97789B5F2243FDA6F6D89D7931CCE747A1E889E89562159BC81F92D5BD684A8C17DF19525AA735893698C96F&RESPONSE=true

URL para rechazo:
http://SPIDER:100/servlet/jdbs_run/call?ptoken=BC8BDEDA4997FED6EDAF06913E0FADACADE95E8F97789B5F2243FDA6F6D89D7931CCE747A1E889E89562159BC81F92D5BD684A8C17DF19525AA735893698C96F&RESPONSE=false

El token de proceso se bloqueará una vez el usuario haya escogido una de las dos opciones.

La decisión de bloquear el token debe decidirla el implantador y como en este ejemplo realizarla desde el código del proceso mediante la llamada a la función webapp.token.process.setEnabled, según:

Copy
<set name='m_token'><webapp.token.getSessionToken /></set>
        <webapp.token.process.setEnabled token='#m_token' enabled='false' />
Example

Calcula el valor hash, lo registra en la tabla de tokens de procesos (wic_conf:wic_user_token_process) y devuelve la url que deberá utilizarse para su ejecución y presentación en formato html.

Copy
<xsql-script name='getTokenProcessURL'>
    <body>
        <println>
            <webapp.token.process.getNewURL user='demo' dbms='demo_sports' code='cefectos_anticipo' token-group='DEMO'>
                <expires><date.timestamp dd='31' MM='3' yy='2014' hh='16' mm='00' /></expires>
                <args>
                    <arg type='string'>P</arg>          <!-- Clase de cartera -->
                    <arg type='string'>A00001</arg>     <!-- Tercero -->
                    <arg type='string'>=</arg>          <!-- Cuenta  -->
                    <arg type='date'>03-04-2014</arg>   <!-- Fecha   -->
                    <arg type='date'><null/></arg>      <!-- Fecha de vencimiento  -->
                    <arg type='string'>=</arg>          <!-- Justificante  -->
                    <arg type='string'>DOCTEST</arg>    <!-- Documento     -->
                    <arg type='string'>0</arg>          <!-- Empresa       -->
                    <arg type='string'>ACMBCN</arg>     <!-- Proyectom contable -->
                    <arg type='string'>ADM01</arg>      <!-- Sección contable   -->
                    <arg type='string'>CH</arg>         <!-- Tipo de efecto     -->
                    <arg type='string'><null/></arg>    <!-- Estado efecto positivo -->
                    <arg type='string'><null/></arg>    <!-- Estado efecto negativo -->
                    <arg type='string'>A</arg>          <!-- Sistema contable       -->
                    <arg type='string'>EUR</arg>        <!-- Moneda                 -->
                    <arg type='decimal'><null/></arg>   <!-- Cambio                 -->
                    <arg type='decimal'>123456,78</arg> <!-- Importe                -->
                    <arg type='string'><null/></arg>    <!-- Perceptor              -->
                    <arg type='string'><null/></arg>    <!-- Número de domiciliación bancaria -->
                    <arg type='string'>ANTICIPO</arg>   <!-- Auxiliar               -->
                </args>
            </webapp.token.process.getNewURL>
        </println>
    </body>
</xsql-script>

Output :

Copy
http://www.mydeister.com/servlet/jdbs_run/call?ptoken=5BA4D28D75E71CF68E50739BF901C174D840FF96493D9A9CB54DF66DF28772BD2D17D2BDD8A461914507C2EEEE9241C62DF3B74B85FC1D0AC2C99D2D642EE2D9

Valor registrado en XSQL Arguments (wic_conf:wic_user_token_process.token_xsql_args):

Copy
P|A00001|=|03-04-2014||=|DOCTEST|0|ACMBCN|ADM01|CH|||A|EUR||123456,78|||ANTICIPO

Valor registrado en Arguments Type (wic_conf:wic_user_token_process.token_xsql_type):

Copy
1|1|1|91|91|1|1|1|1|1|1|1|1|1|1|3|3|1|1|1