Establecer una cookie mediante nFactor
Puede aplicar las etiquetas personalizadas nFactor y establecer una cookie como factor del flujo de autenticación. A través de 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 establece con una etiqueta personalizada y 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 utiliza para crear la cookie y enviar el formulario, y el botón formulario.
- El RfWebUI_custom es el nuevo tema del Portal basado en el tema RfWebUI.
Pasos para establecer una cookie mediante nFactor
-
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
-
Modifique el archivo /var/netscaler/logon/themes/RfWebUI_custom/script.js y agregue 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 explorador 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.
-
Cree un esquema de inicio de sesión para enlazar a la etiqueta de directiva que representa el factor de cookie establecido.
add authentication loginSchema Cookie_LS -authenticationSchema "/nsconfig/loginschema/cookie.xml" <!--NeedCopy-->
-
Cree una directiva de autenticación NO_AUTHN para enlazar 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, moviendo al usuario al siguiente factor o completando el flujo de autenticación.
-
Enlazar el tema del portal RfWebUI_Custom al servidor virtual Citrix Gateway o al servidor virtual AAA de Citrix ADC.