Creación de una página de inicio de sesión automática de cliente de usuario externo

Algunas aplicaciones cliente de usuario externo no requieren autorización de usuario y, por ello, no debe solicitarse ni el nombre de usuario ni la contraseña. No se puede inhabilitar la autenticación en IBM Cúram Social Program Management, por lo que la mejor forma de cumplir con este requisito es escribir un script de inicio de sesión automático.

El script de inicio de sesión automático adopta un nombre de usuario y contraseña codificados y los facilita como información de autenticación cuando así se le solicita. Ello significa que todos los usuarios para tal aplicación siempre se ejecutarán bajo el mismo nombre de usuario. La utilización de tal script debe limitarse a ciertas aplicaciones de acceso abierto.

Al implementar aplicaciones que necesitan un inicio de sesión automático, deben considerarse las implicaciones para la gestión de sesiones. La gestión de sesiones en IBM Cúram Social Program Management mantiene información de la sesión del usuario para garantizar que cuando el usuario vuelva a iniciar la sesión, se abra la información de la sesión relevante, es decir, sus pestañas y navegación, en el mismo sitio donde las dejó. En el caso de un usuario que haya iniciado la sesión automáticamente, esta información no debe conservarse y, por ello, es posible que deba desactivarse la gestión de sesiones en este escenario. Debe consultar la publicación Cúram Web Client Reference Manual (Manual de consulta del cliente web de Cúram) para obtener más detalles sobre cómo realizar la desactivación.

A continuación encontrará ejemplos de scripts JSP de inicio y finalización de sesión automático.

Nota: Las implementaciones de seguridad y las configuraciones difieren entre los proveedores del servidor de aplicaciones por lo que es posible que estos ejemplos no funcionen en todos los caso o para todas las versiones del servidor de aplicaciones.
Figura 1. JSP de inicio de sesión automático
<?xml version="1.0" encoding="UTF-8"?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
  xmlns:prefix="URI"
  version="2.0">
  <jsp:directive.page buffer="32kb"
                      contentType="text/html; charset=UTF-8"
                      pageEncoding="UTF-8" />
  <jsp:text>
    <![CDATA[
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">]]>
  </jsp:text>

  <!-- Automatic redirect to login security check of user
          details specified below -->

  <html>
    <head>
      <script type="text/javascript">
        function autoSubmit() {
          document.getElementById("loginform").submit();
        }
      </script>
      <meta content="text/html; charset=UTF-8"
            http-equiv="Content-Type" />
    </head>
    <body class="logonBody"
          style="visibility: hidden;"
          onload="autoSubmit()">
      <form id="loginform"
            name="loginform"
            action="j_security_check"
            method="post">
        <input type="hidden"
               name="j_username"
               value="generalpublic" />
        <input type="hidden"
               name="j_password"
               value="password" />
        <input type="hidden"
               name="user_type"
               value="EXTERNAL" />
      </form>
    </body>
  </html>
</jsp:root>
Figura 2. JSP de finalización de sesión automática
<?xml version="1.0" encoding="UTF-8"?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
  xmlns:prefix="URI"
  version="2.0">
  <jsp:directive.page buffer="32kb"
                      contentType="text/html; charset=UTF-8"
                      pageEncoding="UTF-8" />
  <jsp:text>
    <![CDATA[
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">]]>
  </jsp:text>
  <html>
    <head>
      <script type="text/javascript">
        function autoSubmit() {
          document.getElementById("logout").submit();
        }
      </script>
      <meta content="text/html; charset=UTF-8"
            http-equiv="Content-Type" />
    </head>
    <body class="logoutBody"
          style="visibility: hidden;"
          onload="autoSubmit()">
      <form id="logout"
            name="logout"
            action="servlet/ApplicationController"
            method="post">
        <input type="submit"
               name="j_logout"
               value="Log Out" />
        <input type="hidden"
               name="logoutExitPage"
               value="redirect.jsp" />
      </form>
    </body>
  </html>
</jsp:root>