Citrix ADC

Définir un cookie à l’aide de nFactor

Vous pouvez appliquer les étiquettes personnalisées NFactor et définir un cookie comme facteur du flux d’authentification. Grâce à des étiquettes personnalisées, vous pouvez utiliser JavaScript pour manipuler le schéma de connexion.

Pour définir un cookie comme facteur, vous n’avez pas besoin d’afficher d’informations à l’utilisateur, ce qui est effectué avec une connexion sans schéma. Au lieu de cela, vous devez interagir avec le navigateur de l’utilisateur pour demander au schéma de connexion de stocker les données souhaitées. Un schéma de connexion est nécessaire pour définir le cookie lorsque la page est chargée. Le cookie est défini avec une étiquette personnalisée et un code JavaScript.

Pour implémenter un facteur qui définit un cookie, créez un fichier XML appelé cookie.xml pour stocker le schéma dans le répertoire /nsconfig/loginschema/ avec le contenu suivant :

<?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>

Dans ce XML ;

  • L’étiquette personnalisée nsg_cookie est utilisée pour créer le cookie et envoyer le formulaire, et le bouton formulaire.
  • RFWEbui_Custom est le nouveau thème Portal basé sur le thème RFWEbui.
  1. Créez un thème de portail basé sur le thème RFWEbui.

    add vpn portaltheme RfWebUI_custom -basetheme RfWebUI
    

    Cette commande crée un dossier pour ce thème dans /var/netscaler/logon/themes/RFWEbui_Custom

  2. Modifiez le fichier /var/netscaler/logon/themes/RfWebUI_custom/script.js et ajoutez le script suivant :

    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=CookieValeu;" + expires + ";path=/";
    
            //Submit form
            document.getElementById('loginBtn').click();
            });
            return div;
        }
    });
    

    Ce code effectue les opérations suivantes :

    • Attend que le navigateur termine le chargement de la page
    • Définit un cookie appelé NSC_COOKIE_NAME avec la valeur CookieValue, valide pendant 1000 jours
    • Soumet automatiquement le formulaire.

    Le cookie est créé et l’utilisateur n’a pas besoin d’interagir avec la page.

  3. Créez un schéma de connexion à lier à l’étiquette de stratégie qui représente le facteur de cookie défini.

    add authentication loginSchema Cookie_LS -authenticationSchema "/nsconfig/loginschema/cookie.xml"
    
  4. Créez une stratégie d’authentification NO_AUTHN à lier à l’étiquette de stratégie qui représente le facteur de cookie défini.

    add authentication Policy NO_AUTHN_POL -rule TRUE -action NO_AUTHN
    

    Cette stratégie est toujours évaluée comme true, en déplaçant l’utilisateur vers le facteur suivant ou en terminant le flux d’authentification.

  5. Liez le thème de portail RFWEbui_Custom au serveur virtuel Citrix Gateway ou au serveur virtuel Citrix ADC AAA.

Définir un cookie à l’aide de nFactor