ADC

Establecer una cookie mediante nFactor

Puede aplicar las etiquetas personalizadas de nFactor y configurar una cookie como factor del flujo de autenticación. Mediante etiquetas personalizadas, puede utilizar JavaScript para manipular el esquema de inicio de sesión.

Para establecer una cookie como factor, no es necesario mostrar ninguna información al usuario, que se realiza con un inicio de sesión sin esquema. En su lugar, debe interactuar con el explorador del usuario para indicar al esquema de inicio de sesión que almacene los datos deseados. Se requiere un esquema de inicio de sesión para establecer la cookie cuando se carga la página. La cookie se configura con una etiqueta personalizada y un código JavaScript.

Para implementar un factor que establezca una cookie, cree un archivo XML llamado cookie.xml para almacenar el esquema en el directorio /nsconfig/loginschema/ con el siguiente contenido:

<?xml version="1.0" encoding="UTF-8"?>
<AuthenticateResponse xmlns="http://citrix.com/authentication/response/1">
<Status>success</Status>
<Result>more-info</Result>
<StateContext></StateContext>
<AuthenticationRequirements>
<PostBack>/nf/auth/doAuthentication.do</PostBack>
<CancelPostBack>/nf/auth/doLogoff.do</CancelPostBack>
<CancelButtonText>Cancel</CancelButtonText>
<Requirements>

<Requirement>
<Credential><ID>nsg_cookie</ID><Type>nsg_cookie</Type></Credential>
<Label><Text>Logon Type:</Text><Type>Plain</Type></Label>
</Requirement>

<Requirement>
<Credential><ID>loginBtn</ID><Type>none</Type></Credential>
<Label><Type>none</Type></Label><Input><Button>Log On</Button></Input>
</Requirement>

</Requirements>
</AuthenticationRequirements>
</AuthenticateResponse>
<!--NeedCopy-->

En este XML;

  • La etiqueta personalizada nsg_cookie se usa para crear la cookie y enviar el formulario y el botón del formulario.
  • El RfWebUI_custom es el nuevo tema del Portal basado en el tema RfWebUI.
  1. Cree un tema del portal basado en el tema RfWebUI.

    add vpn portaltheme RfWebUI_custom -basetheme RfWebUI
    <!--NeedCopy-->
    

    Este comando crea una carpeta para este tema en /var/netscaler/logon/themes/RfWebUI_custom

  2. Edite el archivo /var/netscaler/logon/themes/RfWebUI_custom/script.js y añada el siguiente script:

    CTXS.ExtensionAPI.addCustomCredentialHandler({
        // The name of the credential, must match the type returned by the server
        getCredentialTypeName: function () { return "nsg_cookie"; },
        // Generate HTML for the custom credential
        getCredentialTypeMarkup: function (requirements) {
            var div = $("<div></div>");
            $(document).ready(function() {
            //Set cookie valid for 1000 days
            var exdays = 1000;
            var d = new Date();
            d.setTime(d.getTime() + (exdays\*24\*60\*60\*1000));
            var expires = "expires="+ d.toUTCString();
            document.cookie = "NSC_COOKIE_NAME=CookieValue;" + expires + ";path=/";
    
            //Submit form
            document.getElementById('loginBtn').click();
            });
            return div;
        }
    });
    <!--NeedCopy-->
    

    Este código realiza lo siguiente:

    • Espera a que el navegador termine de cargar la página
    • Establece una cookie llamada NSC_COOKIE_NAME con el valor CookieValue, válido durante 1000 días
    • Envía automáticamente el formulario.

    La cookie se crea y el usuario no necesita interactuar con la página.

  3. Cree un esquema de inicio de sesión para vincularlo a la etiqueta de directiva que representa el factor de cookie establecido.

    add authentication loginSchema Cookie_LS -authenticationSchema "/nsconfig/loginschema/cookie.xml"
    <!--NeedCopy-->
    
  4. Cree una directiva de autenticación NO_AUTHN para enlazarla a la etiqueta de directiva que representa el factor de cookie establecido.

    add authentication Policy NO_AUTHN_POL -rule TRUE -action NO_AUTHN
    <!--NeedCopy-->
    

    Esta directiva siempre se evalúa como verdadera, lo que lleva al usuario al siguiente factor o completa el flujo de autenticación.

  5. Enlazar el tema del portal RfWebUI_Custom al servidor virtual NetScaler Gateway o al servidor virtual AAA de NetScaler.

Establecer una cookie mediante nFactor